Resending without the zip file in case folks email clients were blocking it.
James ---------- Forwarded message ---------- From: James Bigler <[email protected]> Date: Tue, Dec 4, 2012 at 5:30 PM Subject: Fwd: Chaining custom commands in VS 2010 To: "[email protected]" <[email protected]> Is there something CMake can do to correct this error/bug with VS 2010? ---------- Forwarded message ---------- From: James Bigler <[email protected]> Date: Mon, Dec 3, 2012 at 3:42 PM Subject: Chaining custom commands in VS 2010 To: "[email protected]" <[email protected]> I'm trying to add a custom command that takes one output and generates an additional output. source1.cpp -> source1.obj source2.cpp -> source2.obj source1.obj + source2.obj -> temp.obj link source1.obj source2.obj temp.obj For VS 2008 and Makefiles, this works out just fine. For VS 2010 it doesn't seem to understand that if source1.obj or source2.obj changes that it needs to run the temp.obj build rule. The dependencies look correct in the project. In a fresh build it builds source1.obj, source2.obj and temp.obj just fine. In subsequent builds where source1.obj or source2.obj are compiled, it fails to build temp.obj on the first build command (as if it didn't understand that building source1.obj or source2.obj were a dependency for temp.obj). On a subsequent build, MSbuild recognizes that source1.obj or source2.obj have changed and runs the build command for temp.obj. I've attached the zip file if anyone cares to take a look. Here's the CMake code inlines, in case mail systems eat the zip file. source1.cpp and source2.cpp don't have anything really useful in it. cmake_minimum_required(VERSION 2.8.0) project(obj-translate) set(s1 "${CMAKE_CURRENT_SOURCE_DIR}/source1.cpp") set(s2 "${CMAKE_CURRENT_SOURCE_DIR}/source2.cpp") set(o1 "${CMAKE_CFG_INTDIR}/source1${CMAKE_CXX_OUTPUT_EXTENSION}") set(o2 "${CMAKE_CFG_INTDIR}/source2${CMAKE_CXX_OUTPUT_EXTENSION}") set(temp "${CMAKE_CFG_INTDIR}/temp${CMAKE_CXX_OUTPUT_EXTENSION}") add_custom_command( OUTPUT ${o1} MAIN_DEPENDENCY ${s1} COMMAND ${CMAKE_CXX_COMPILER} ${s1} -c "/Fo\"${o1}\"" COMMENT "11111111111111 Making ${s1} -> ${o1}\n\n" ) add_custom_command( OUTPUT ${o2} MAIN_DEPENDENCY ${s2} COMMAND ${CMAKE_CXX_COMPILER} ${s2} -c "/Fo\"${o2}\"" COMMENT "22222222222222 Making ${s2} -> ${o2}\n\n" ) add_custom_command( OUTPUT ${temp} DEPENDS ${o1} ${o2} COMMAND "${CMAKE_COMMAND}" -E copy "${o1}" "${temp}" COMMENT "TTTTTTTTTTTTTT Making ${o1} + ${o2} -> ${temp}\n\n" ) set_source_files_properties("${s1}" "${s2}" PROPERTIES HEADER_FILE_ONLY TRUE # Don't let VS compile this file ) set_source_files_properties("${o1}" "${o2}" "${temp}" PROPERTIES GENERATED TRUE # This file is generated during the build EXTERNAL_OBJECT TRUE # This is an object file not to be compiled, but only be linked. ) add_library(obj-translate STATIC ${s1} ${s2} ${temp} ${o1} ${o2} )
-- Powered by www.kitware.com Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ Follow this link to subscribe/unsubscribe: http://public.kitware.com/cgi-bin/mailman/listinfo/cmake-developers
