From 16e7d4ba2c82081afea5af05bc6360b281d5e0c3 Mon Sep 17 00:00:00 2001 From: Bill Hoffman Date: Tue, 21 Dec 2010 09:17:21 -0500 Subject: [PATCH 1/3] Add flags to resource builds on vs 2010 with a test. --- Source/cmVisualStudio10TargetGenerator.cxx | 5 ++++- Tests/CMakeLists.txt | 12 +++++++++++- Tests/VSResource/CMakeLists.txt | 4 ++++ Tests/VSResource/main.cpp | 10 ++++++++++ Tests/VSResource/test.rc | 5 +++++ Tests/VSResource/test.txt | 1 + 6 files changed, 35 insertions(+), 2 deletions(-) create mode 100644 Tests/VSResource/CMakeLists.txt create mode 100644 Tests/VSResource/main.cpp create mode 100644 Tests/VSResource/test.rc create mode 100644 Tests/VSResource/test.txt diff --git a/Source/cmVisualStudio10TargetGenerator.cxx b/Source/cmVisualStudio10TargetGenerator.cxx index f78aeecce..ebe36f265 100644 --- a/Source/cmVisualStudio10TargetGenerator.cxx +++ b/Source/cmVisualStudio10TargetGenerator.cxx @@ -1139,10 +1139,13 @@ OutputIncludes(std::vector const & includes) void cmVisualStudio10TargetGenerator:: -WriteRCOptions(std::string const& , +WriteRCOptions(std::string const& configName, std::vector const & includes) { this->WriteString("\n", 2); + Options& clOptions = *(this->ClOptions[configName]); + clOptions.OutputPreprocessorDefinitions(*this->BuildFileStream, " ", + "\n"); this->OutputIncludes(includes); this->WriteString("\n", 2); } diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt index 04f077442..f7d3c182a 100644 --- a/Tests/CMakeLists.txt +++ b/Tests/CMakeLists.txt @@ -246,7 +246,6 @@ IF(BUILD_TESTING) --test-command Simple) LIST(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/Simple_CodeBlocksGenerator") ENDIF ("${cmakeOutput}" MATCHES CodeBlocks) - # check for the KDevelop3 generator IF ("${cmakeOutput}" MATCHES KDevelop3) ADD_TEST(Simple_KDevelop3Generator ${CMAKE_CTEST_COMMAND} @@ -262,6 +261,17 @@ IF(BUILD_TESTING) ENDIF ("${cmakeOutput}" MATCHES KDevelop3) ENDIF(${CMAKE_TEST_GENERATOR} MATCHES "Unix Makefiles" OR ${CMAKE_TEST_GENERATOR} MATCHES "KDevelop") + ADD_TEST(VSResource ${CMAKE_CTEST_COMMAND} + --build-and-test + "${CMake_SOURCE_DIR}/Tests/VSResource" + "${CMake_BINARY_DIR}/Tests/VSResource" + --build-two-config + --build-generator ${CMAKE_TEST_GENERATOR} + --build-project VSResource + --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM} + --test-command VSResource) + LIST(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/VSResource") + # test for correct sub-project generation # not implemented in VS6 or Xcode diff --git a/Tests/VSResource/CMakeLists.txt b/Tests/VSResource/CMakeLists.txt new file mode 100644 index 000000000..8a71bd048 --- /dev/null +++ b/Tests/VSResource/CMakeLists.txt @@ -0,0 +1,4 @@ +cmake_minimum_required (VERSION 2.6) +project (VSResource) +add_definitions(/DCMAKE_RCDEFINE="test.txt") +add_executable(VSResource main.cpp test.rc) diff --git a/Tests/VSResource/main.cpp b/Tests/VSResource/main.cpp new file mode 100644 index 000000000..6f68df3eb --- /dev/null +++ b/Tests/VSResource/main.cpp @@ -0,0 +1,10 @@ +#include + +int main(int argc, char** argv) { + HRSRC hello = ::FindResource(0, "hello", "TEXT"); + if(hello) { + return 0; + } else { + return 1; + } +} diff --git a/Tests/VSResource/test.rc b/Tests/VSResource/test.rc new file mode 100644 index 000000000..8aab8b7b8 --- /dev/null +++ b/Tests/VSResource/test.rc @@ -0,0 +1,5 @@ +#ifdef CMAKE_RCDEFINE +hello TEXT DISCARDABLE CMAKE_RCDEFINE +#else +#error "resource compiler did not get defines from command line!" +#endif \ No newline at end of file diff --git a/Tests/VSResource/test.txt b/Tests/VSResource/test.txt new file mode 100644 index 000000000..980a0d5f1 --- /dev/null +++ b/Tests/VSResource/test.txt @@ -0,0 +1 @@ +Hello World! From 753e2082851b67163dda4764e08c8ce9b84690fe Mon Sep 17 00:00:00 2001 From: Bill Hoffman Date: Wed, 22 Dec 2010 15:40:53 -0500 Subject: [PATCH 2/3] Disable incremental testing for this test, it crashes vs9 linker. On windows 7 64 bit, the vs9 linker will crash when linking an application with a resource in it. --- Tests/VSResource/CMakeLists.txt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Tests/VSResource/CMakeLists.txt b/Tests/VSResource/CMakeLists.txt index 8a71bd048..e84295554 100644 --- a/Tests/VSResource/CMakeLists.txt +++ b/Tests/VSResource/CMakeLists.txt @@ -1,4 +1,7 @@ cmake_minimum_required (VERSION 2.6) project (VSResource) add_definitions(/DCMAKE_RCDEFINE="test.txt") +string(REPLACE "/INCREMENTAL:YES" "" + CMAKE_EXE_LINKER_FLAGS_DEBUG + "${CMAKE_EXE_LINKER_FLAGS_DEBUG}") add_executable(VSResource main.cpp test.rc) From 8c7b19d35ee81afac57fe623217578191f4d034c Mon Sep 17 00:00:00 2001 From: Bill Hoffman Date: Wed, 22 Dec 2010 16:14:37 -0500 Subject: [PATCH 3/3] Only run resource test for MSVC compilers. --- Tests/CMakeLists.txt | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt index f7d3c182a..8f29641d0 100644 --- a/Tests/CMakeLists.txt +++ b/Tests/CMakeLists.txt @@ -131,6 +131,9 @@ IF(BUILD_TESTING) ADD_TEST_MACRO(TarTest TarTest) ADD_TEST_MACRO(SystemInformation SystemInformation) ADD_TEST_MACRO(MathTest MathTest) + IF(MSVC) + ADD_TEST_MACRO(VSResource VSResource) + ENDIF() ADD_TEST_MACRO(Simple Simple) ADD_TEST_MACRO(PreOrder PreOrder) ADD_TEST_MACRO(MissingSourceFile MissingSourceFile) @@ -261,17 +264,6 @@ IF(BUILD_TESTING) ENDIF ("${cmakeOutput}" MATCHES KDevelop3) ENDIF(${CMAKE_TEST_GENERATOR} MATCHES "Unix Makefiles" OR ${CMAKE_TEST_GENERATOR} MATCHES "KDevelop") - ADD_TEST(VSResource ${CMAKE_CTEST_COMMAND} - --build-and-test - "${CMake_SOURCE_DIR}/Tests/VSResource" - "${CMake_BINARY_DIR}/Tests/VSResource" - --build-two-config - --build-generator ${CMAKE_TEST_GENERATOR} - --build-project VSResource - --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM} - --test-command VSResource) - LIST(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/VSResource") - # test for correct sub-project generation # not implemented in VS6 or Xcode