diff options
Diffstat (limited to 'Tests/PrecompiledHeader/CMakeLists.txt')
-rw-r--r-- | Tests/PrecompiledHeader/CMakeLists.txt | 48 |
1 files changed, 16 insertions, 32 deletions
diff --git a/Tests/PrecompiledHeader/CMakeLists.txt b/Tests/PrecompiledHeader/CMakeLists.txt index 7b7f26c..8b76eb4 100644 --- a/Tests/PrecompiledHeader/CMakeLists.txt +++ b/Tests/PrecompiledHeader/CMakeLists.txt @@ -13,14 +13,13 @@ ELSE(CMAKE_CONFIGURATION_TYPES) ENDIF(CMAKE_CONFIGURATION_TYPES) FILE(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/PCH) -# The VS6 IDE does not support renaming .pch files so we cannot use a -# separate target. +# The VS6 IDE does not support renaming .pch files with /Fp. IF("${CMAKE_GENERATOR}" MATCHES "Visual Studio 6") - SET(PCH_USE_TARGET 0) SET(PCH_USE_INCLUDE_DIR 1) + SET(PCH_FILE) ELSE("${CMAKE_GENERATOR}" MATCHES "Visual Studio 6") - SET(PCH_USE_TARGET 1) SET(PCH_USE_INCLUDE_DIR 0) + SET(PCH_FILE "\"/Fp${PCH_DIR}/foo_precompiled.pch\"") ENDIF("${CMAKE_GENERATOR}" MATCHES "Visual Studio 6") # Choose between an explicit include path and using /I during @@ -34,37 +33,22 @@ ENDIF(PCH_USE_INCLUDE_DIR) # Create a target that will use a precompiled header. SET(foo_SRCS foo1.c foo2.c) -IF(PCH_USE_TARGET) - ADD_EXECUTABLE(foo ${foo_SRCS}) - - # Create a target to precompile the header for the executable. - ADD_LIBRARY(foo_precompile foo_precompile.c include/foo_precompiled.h) - SET_TARGET_PROPERTIES(foo_precompile PROPERTIES OUTPUT_NAME foo) - ADD_DEPENDENCIES(foo foo_precompile) - - SET(PCH_TARGETS foo foo_precompile) - SET(PCH_FILE "\"/Fp${PCH_DIR}/foo_precompiled.pch\"") -ELSE(PCH_USE_TARGET) - # Put the precompiled header source directly in the target. - ADD_EXECUTABLE(foo foo_precompile.c ${foo_SRCS}) - SET(PCH_TARGETS foo) -ENDIF(PCH_USE_TARGET) - -# Add the PCH to the list of files to clean. It is created as a -# side-effect so CMake does not know about it. -SET_DIRECTORY_PROPERTIES(PROPERTIES - ADDITIONAL_MAKE_CLEAN_FILES ${PCH_DIR}/foo_precompiled.pch - ) +ADD_EXECUTABLE(foo foo_precompile.c ${foo_SRCS}) -# Setup flags on the two targets to create and use the precompiled header. -SET_TARGET_PROPERTIES(${PCH_TARGETS} PROPERTIES COMPILE_FLAGS - "/Yufoo_precompiled.h /FIfoo_precompiled.h ${PCH_FILE}") -SET_SOURCE_FILES_PROPERTIES(foo_precompile.c PROPERTIES COMPILE_FLAGS - "/Ycfoo_precompiled.h ${PCH_INCLUDE_DIR}") +# Setup flags on the target to create and use the precompiled header. +SET_TARGET_PROPERTIES(foo PROPERTIES + COMPILE_FLAGS "/Yufoo_precompiled.h /FIfoo_precompiled.h ${PCH_FILE}") +SET_SOURCE_FILES_PROPERTIES(foo_precompile.c PROPERTIES + COMPILE_FLAGS "/Ycfoo_precompiled.h ${PCH_INCLUDE_DIR}") -# Make sure the object files rebuild when their precompiled header has changed. -# The VS IDE takes care of this automatically. +# Setup dependencies for precompiled header creation and use. The VS +# IDE takes care of this automatically. IF("${CMAKE_GENERATOR}" MATCHES "Makefile") + # This source file creates the precompiled header as a side-effect. + SET_SOURCE_FILES_PROPERTIES(foo_precompile.c PROPERTIES + OBJECT_OUTPUTS "${PCH_DIR}/foo_precompiled.pch") + + # These source files use the precompiled header. SET_SOURCE_FILES_PROPERTIES(${foo_SRCS} PROPERTIES OBJECT_DEPENDS "${PCH_DIR}/foo_precompiled.pch") ENDIF("${CMAKE_GENERATOR}" MATCHES "Makefile") |