[CMake] Why is this custom command run twice?

Aaron_Wright at selinc.com Aaron_Wright at selinc.com
Thu Apr 22 11:49:26 EDT 2010


Interesting. I had a little typo in the first example, here's another one. 
You only need a file called "generated.txt.in" next to the CMakeLists.txt 
file.


CMAKE_MINIMUM_REQUIRED(VERSION 2.8)

PROJECT(quick_test)

ADD_CUSTOM_COMMAND(
   OUTPUT "${PROJECT_BINARY_DIR}/generated.txt"
   COMMAND ${CMAKE_COMMAND} -E copy 
      "${PROJECT_SOURCE_DIR}/generated.txt.in" 
      "${PROJECT_BINARY_DIR}/generated.txt"
   DEPENDS "${PROJECT_SOURCE_DIR}/generated.txt.in")
 
 ADD_CUSTOM_COMMAND(
   OUTPUT "${PROJECT_BINARY_DIR}/generated_used.stamp"
   COMMAND ${CMAKE_COMMAND} -E touch 
"${PROJECT_BINARY_DIR}/generated_used.stamp"
   DEPENDS "${PROJECT_BINARY_DIR}/generated.txt"
   COMMENT "Using generated.txt")
 
 ADD_CUSTOM_TARGET(
   ${PROJECT_NAME}
   DEPENDS "${PROJECT_BINARY_DIR}/generated_used.stamp")


This builds ok the first time, but then change the "generated.txt.in" and 
run the build twice and the second time you'll see "Using generated.txt" 
again, which I don't want to see. I've tried VS 2008 and NMake, using 
CMake 2.8 and 2.8.1.
-------------------------------------------------------------
Aaron Wright




From:
Michael Wild <themiwi at gmail.com>
To:
Aaron_Wright at selinc.com
Cc:
cmake at cmake.org
Date:
04/21/2010 11:41 PM
Subject:
Re: [CMake] Why is this custom command run twice?
Sent by:
cmake-bounces at cmake.org




On 22. Apr, 2010, at 5:12 , Aaron_Wright at selinc.com wrote:

> I'm trying to do something a little weird, and I'm almost there but not 
> quite. I'm trying to generate a file and then run a command based on 
that 
> file. I only want the command to run when the file changes and thus the 
> generated file changes. Instead the first build I get both custom 
commands 
> run, and then on a second build, the second custom command runs again, 
> which is not what I want. 
> 
> This is what I got (just an example):
> 
> 
> ADD_CUSTOM_COMMAND(
>   OUTPUT "${PROJECT_BINARY_DIR}/generated.txt"
>   COMMAND ${CMAKE_COMMAND} -E touch 
"${PROJECT_BINARY_DIR}/generated.txt"
>   DEPENDS "${PROJECT_SOURCE_DIR}/generated.txt")
> 
> ADD_CUSTOM_COMMAND(
>   OUTPUT "${PROJECT_BINARY_DIR}/generated_used.stamp"
>   COMMAND ${CMAKE_COMMAND} -E touch 
> "${PROJECT_BINARY_DIR}/generated_used.stamp"
>   DEPENDS "${PROJECT_BINARY_DIR}/generated.txt"
>   COMMENT "Using generated.txt")
> 
> ADD_CUSTOM_TARGET(
>   ${PROJECT_NAME}
>   DEPENDS "${PROJECT_BINARY_DIR}/generated_used.stamp")
> 
> 
> What I'm I missing? Thanks

Your example works fine for me (using CMake 2.8.1 and Unix Makefiles 
generator on Mac OS X 10.6.2).

Michael

_______________________________________________
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://www.cmake.org/mailman/listinfo/cmake

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.cmake.org/pipermail/cmake/attachments/20100422/9e468c91/attachment.htm>


More information about the CMake mailing list