mirror of
https://github.com/Kitware/CMake.git
synced 2026-05-05 13:50:10 -05:00
try_compile: Restore expansion of ;-list in COMPILE_DEFINITIONS
The quoting added by commit8c5221fb1f(try_compile: Preserve special characters in COMPILE_DEFINITIONS, 2019-01-21, v3.14.0-rc1~108^2~3) broke the case that the `COMPILE_DEFINITIONS` value contains a `;`. Without the quoting the `;` would be generated literally in an unquoted argument in the test `CMakeLists.txt` file and would then be expanded. With quoting the `;` is preserved, which is not the old behavior. Fix this by expanding the `;`-list ahead of time. Add test cases for behavior with both `#` and `;`. This was noticed with the PGI compiler where we set `CMAKE_CXX*_STANDARD_COMPILE_OPTION` to values like `--c++17;-A`. The symptom had also been observed while preparing commitef8f237686(ParseImplicitIncludeInfo: add SunPro Fortran and PGI compiler, Cray fix, 2019-01-29, v3.14.0-rc1~26^2~2) but was not recognized at the time as a regression. Revert the workaround added by that commit. Fixes: #18919
This commit is contained in:
@@ -226,7 +226,7 @@ int cmCoreTryCompile::TryCompileCode(std::vector<std::string> const& argv,
|
||||
} else if (doing == DoingCMakeFlags) {
|
||||
cmakeFlags.push_back(argv[i]);
|
||||
} else if (doing == DoingCompileDefinitions) {
|
||||
compileDefs.push_back(argv[i]);
|
||||
cmSystemTools::ExpandListArgument(argv[i], compileDefs);
|
||||
} else if (doing == DoingLinkOptions) {
|
||||
linkOptions.push_back(argv[i]);
|
||||
} else if (doing == DoingLinkLibraries) {
|
||||
|
||||
Reference in New Issue
Block a user