diff options
author | Brad King <brad.king@kitware.com> | 2007-09-13 17:37:45 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2007-09-13 17:37:45 (GMT) |
commit | 9f542f4ef78693092652d41ff4de1970e6af6c1d (patch) | |
tree | d0020f7e14d876fa612e72398bc10ef243c07c34 /Tests/PrecompiledHeader | |
parent | 782c5c270f4aee955c0868d23e677ba2015d3efd (diff) | |
download | CMake-9f542f4ef78693092652d41ff4de1970e6af6c1d.zip CMake-9f542f4ef78693092652d41ff4de1970e6af6c1d.tar.gz CMake-9f542f4ef78693092652d41ff4de1970e6af6c1d.tar.bz2 |
ENH: Added OBJECT_OUTPUTS source file property. Updated PrecompiledHeader test to use it (making the test simpler).
Diffstat (limited to 'Tests/PrecompiledHeader')
-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") |