summaryrefslogtreecommitdiffstats
path: root/Tests/PrecompiledHeader/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'Tests/PrecompiledHeader/CMakeLists.txt')
-rw-r--r--Tests/PrecompiledHeader/CMakeLists.txt48
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")