[cmake-commits] king committed CMakeLists.txt 1.4 1.5

cmake-commits at cmake.org cmake-commits at cmake.org
Thu Sep 13 13:37:47 EDT 2007


Update of /cvsroot/CMake/CMake/Tests/PrecompiledHeader
In directory public:/mounts/ram/cvs-serv28955/Tests/PrecompiledHeader

Modified Files:
	CMakeLists.txt 
Log Message:
ENH: Added OBJECT_OUTPUTS source file property.  Updated PrecompiledHeader test to use it (making the test simpler).


Index: CMakeLists.txt
===================================================================
RCS file: /cvsroot/CMake/CMake/Tests/PrecompiledHeader/CMakeLists.txt,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -d -r1.4 -r1.5
--- CMakeLists.txt	12 Mar 2007 17:28:57 -0000	1.4
+++ CMakeLists.txt	13 Sep 2007 17:37:45 -0000	1.5
@@ -13,14 +13,13 @@
 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 @@
 
 # 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")



More information about the Cmake-commits mailing list