[CMake] Run custom command only when dependency changes
Nils Gladitz
nilsgladitz at gmail.com
Tue Apr 1 03:25:27 EDT 2014
> SET (MY_SRC Event_log.h other.cpp other1.cpp)
>
> ADD_EXECUTABLE(MyExe ${MY_SRC }
>
> add_custom_command(OUTPUT Event_log.h COMMAND mc Event_log.mc
> WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} DEPENDS Event_log.mc)
>
> Whenever I run the build command, this causes the "mc" to rerun each
> time (even if the .mc file is not changed), and in effect recompiling a
> major portion of my project.
>
> May I know what am I doing wrong here?
The OUTPUT path is relative to the current binary directory.
Since you set the WORKING_DIRECTORY to the current source directory (I
assume this is where the output actually goes) the actual output path
and the output you specified don't match up.
This causes to command to rerun every time since the output as specified
is never created.
I would generate the output in the binary directory rather than the
source directory if possible so that separate parallel build directories
for the same source directory still work as intended.
Nils
More information about the CMake
mailing list