diff options
author | Brad King <brad.king@kitware.com> | 2007-05-09 14:18:31 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2007-05-09 14:18:31 (GMT) |
commit | adcd87c976eede8e76234550beb89ca082a00ade (patch) | |
tree | faae266121f6b1ffeb2838a2c85318c79e4b516d | |
parent | e701ef77d8487c3cf348f24f86fdfd97661681ab (diff) | |
download | CMake-adcd87c976eede8e76234550beb89ca082a00ade.zip CMake-adcd87c976eede8e76234550beb89ca082a00ade.tar.gz CMake-adcd87c976eede8e76234550beb89ca082a00ade.tar.bz2 |
BUG: Fixed cmLocalVisualStudio7Generator to deal with quotes in macro definitions properly. This addresses bug#4983.
-rw-r--r-- | Source/cmLocalVisualStudio7Generator.cxx | 17 | ||||
-rw-r--r-- | Tests/Complex/Executable/CMakeLists.txt | 3 | ||||
-rw-r--r-- | Tests/Complex/Executable/complex.cxx | 13 | ||||
-rw-r--r-- | Tests/ComplexOneConfig/Executable/CMakeLists.txt | 3 | ||||
-rw-r--r-- | Tests/ComplexOneConfig/Executable/complex.cxx | 13 | ||||
-rw-r--r-- | Tests/ComplexRelativePaths/Executable/CMakeLists.txt | 3 | ||||
-rw-r--r-- | Tests/ComplexRelativePaths/Executable/complex.cxx | 13 |
7 files changed, 53 insertions, 12 deletions
diff --git a/Source/cmLocalVisualStudio7Generator.cxx b/Source/cmLocalVisualStudio7Generator.cxx index 6e2f1be..2019b8e 100644 --- a/Source/cmLocalVisualStudio7Generator.cxx +++ b/Source/cmLocalVisualStudio7Generator.cxx @@ -502,9 +502,9 @@ void cmLocalVisualStudio7Generator::WriteConfiguration(std::ostream& fout, this->Makefile->IsOn("CMAKE_VERBOSE_MAKEFILE")); // Add a definition for the configuration name. - std::string configDefine = "CMAKE_INTDIR=\\\""; + std::string configDefine = "CMAKE_INTDIR=\""; configDefine += configName; - configDefine += "\\\""; + configDefine += "\""; targetOptions.AddDefine(configDefine); // Add the export symbol definition for shared library objects. @@ -1836,14 +1836,13 @@ cmLocalVisualStudio7GeneratorOptions for(std::vector<cmStdString>::const_iterator di = this->Defines.begin(); di != this->Defines.end(); ++di) { - // Escape this flag for the IDE. - std::string define = - cmLocalVisualStudio7GeneratorEscapeForXML(di->c_str()); - - // Old comment: // Double-quotes in the value of the definition must be escaped - // with a backslash. The entire definition should be quoted in - // the generated xml attribute to avoid confusing the VS parser. + // with a backslash. + std::string define = di->c_str(); + cmSystemTools::ReplaceString(define, "\"", "\\\""); + + // Escape this flag for the IDE. + define = cmLocalVisualStudio7GeneratorEscapeForXML(define.c_str()); // Write this flag. Quote it if the definition is not // alphanumeric. diff --git a/Tests/Complex/Executable/CMakeLists.txt b/Tests/Complex/Executable/CMakeLists.txt index 0c8a51d..d7245c4 100644 --- a/Tests/Complex/Executable/CMakeLists.txt +++ b/Tests/Complex/Executable/CMakeLists.txt @@ -87,7 +87,8 @@ ADD_CUSTOM_COMMAND(TARGET complex POST_BUILD "${Complex_BINARY_DIR}/Executable/postbuild2.txt") SET_SOURCE_FILES_PROPERTIES(complex - COMPILE_FLAGS "-DFILE_HAS_EXTRA_COMPILE_FLAGS" + COMPILE_FLAGS + "-DFILE_HAS_EXTRA_COMPILE_FLAGS -DFILE_DEFINE_STRING=\\\"hello\\\"" OBJECT_DEPENDS ${Complex_BINARY_DIR}/cmTestGeneratedHeader.h ) SET_TARGET_PROPERTIES(complex PROPERTIES COMPILE_FLAGS "-DCOMPLEX_TARGET_FLAG") diff --git a/Tests/Complex/Executable/complex.cxx b/Tests/Complex/Executable/complex.cxx index dee36ce..c7c4ae5 100644 --- a/Tests/Complex/Executable/complex.cxx +++ b/Tests/Complex/Executable/complex.cxx @@ -1139,6 +1139,19 @@ int main() cmPassed("SET_SOURCE_FILES_PROPERTIES succeeded in setting FILE_HAS_EXTRA_COMPILE_FLAGS flag"); #endif +#ifndef FILE_DEFINE_STRING + cmFailed("SET_SOURCE_FILES_PROPERTIES failed at setting FILE_DEFINE_STRING flag"); +#else + if(strcmp(FILE_DEFINE_STRING, "hello") != 0) + { + cmFailed("SET_SOURCE_FILES_PROPERTIES failed at setting FILE_DEFINE_STRING flag correctly"); + } + else + { + cmPassed("SET_SOURCE_FILES_PROPERTIES succeeded in setting FILE_DEFINE_STRING flag"); + } +#endif + #ifndef FILE_HAS_ABSTRACT cmFailed("SET_SOURCE_FILES_PROPERTIES failed at setting ABSTRACT flag"); #else diff --git a/Tests/ComplexOneConfig/Executable/CMakeLists.txt b/Tests/ComplexOneConfig/Executable/CMakeLists.txt index 0c8a51d..d7245c4 100644 --- a/Tests/ComplexOneConfig/Executable/CMakeLists.txt +++ b/Tests/ComplexOneConfig/Executable/CMakeLists.txt @@ -87,7 +87,8 @@ ADD_CUSTOM_COMMAND(TARGET complex POST_BUILD "${Complex_BINARY_DIR}/Executable/postbuild2.txt") SET_SOURCE_FILES_PROPERTIES(complex - COMPILE_FLAGS "-DFILE_HAS_EXTRA_COMPILE_FLAGS" + COMPILE_FLAGS + "-DFILE_HAS_EXTRA_COMPILE_FLAGS -DFILE_DEFINE_STRING=\\\"hello\\\"" OBJECT_DEPENDS ${Complex_BINARY_DIR}/cmTestGeneratedHeader.h ) SET_TARGET_PROPERTIES(complex PROPERTIES COMPILE_FLAGS "-DCOMPLEX_TARGET_FLAG") diff --git a/Tests/ComplexOneConfig/Executable/complex.cxx b/Tests/ComplexOneConfig/Executable/complex.cxx index dee36ce..c7c4ae5 100644 --- a/Tests/ComplexOneConfig/Executable/complex.cxx +++ b/Tests/ComplexOneConfig/Executable/complex.cxx @@ -1139,6 +1139,19 @@ int main() cmPassed("SET_SOURCE_FILES_PROPERTIES succeeded in setting FILE_HAS_EXTRA_COMPILE_FLAGS flag"); #endif +#ifndef FILE_DEFINE_STRING + cmFailed("SET_SOURCE_FILES_PROPERTIES failed at setting FILE_DEFINE_STRING flag"); +#else + if(strcmp(FILE_DEFINE_STRING, "hello") != 0) + { + cmFailed("SET_SOURCE_FILES_PROPERTIES failed at setting FILE_DEFINE_STRING flag correctly"); + } + else + { + cmPassed("SET_SOURCE_FILES_PROPERTIES succeeded in setting FILE_DEFINE_STRING flag"); + } +#endif + #ifndef FILE_HAS_ABSTRACT cmFailed("SET_SOURCE_FILES_PROPERTIES failed at setting ABSTRACT flag"); #else diff --git a/Tests/ComplexRelativePaths/Executable/CMakeLists.txt b/Tests/ComplexRelativePaths/Executable/CMakeLists.txt index 0c8a51d..d7245c4 100644 --- a/Tests/ComplexRelativePaths/Executable/CMakeLists.txt +++ b/Tests/ComplexRelativePaths/Executable/CMakeLists.txt @@ -87,7 +87,8 @@ ADD_CUSTOM_COMMAND(TARGET complex POST_BUILD "${Complex_BINARY_DIR}/Executable/postbuild2.txt") SET_SOURCE_FILES_PROPERTIES(complex - COMPILE_FLAGS "-DFILE_HAS_EXTRA_COMPILE_FLAGS" + COMPILE_FLAGS + "-DFILE_HAS_EXTRA_COMPILE_FLAGS -DFILE_DEFINE_STRING=\\\"hello\\\"" OBJECT_DEPENDS ${Complex_BINARY_DIR}/cmTestGeneratedHeader.h ) SET_TARGET_PROPERTIES(complex PROPERTIES COMPILE_FLAGS "-DCOMPLEX_TARGET_FLAG") diff --git a/Tests/ComplexRelativePaths/Executable/complex.cxx b/Tests/ComplexRelativePaths/Executable/complex.cxx index dee36ce..c7c4ae5 100644 --- a/Tests/ComplexRelativePaths/Executable/complex.cxx +++ b/Tests/ComplexRelativePaths/Executable/complex.cxx @@ -1139,6 +1139,19 @@ int main() cmPassed("SET_SOURCE_FILES_PROPERTIES succeeded in setting FILE_HAS_EXTRA_COMPILE_FLAGS flag"); #endif +#ifndef FILE_DEFINE_STRING + cmFailed("SET_SOURCE_FILES_PROPERTIES failed at setting FILE_DEFINE_STRING flag"); +#else + if(strcmp(FILE_DEFINE_STRING, "hello") != 0) + { + cmFailed("SET_SOURCE_FILES_PROPERTIES failed at setting FILE_DEFINE_STRING flag correctly"); + } + else + { + cmPassed("SET_SOURCE_FILES_PROPERTIES succeeded in setting FILE_DEFINE_STRING flag"); + } +#endif + #ifndef FILE_HAS_ABSTRACT cmFailed("SET_SOURCE_FILES_PROPERTIES failed at setting ABSTRACT flag"); #else |