[CMake] Unpredictable ADD_CUSTOM_TARGET behaviour
Sumit Kumar
dost_4_ever at yahoo.com
Thu Mar 8 10:05:54 EST 2012
Hello,
I am facing a weird scenario when using the ADD_CUSTOM_TARGET / ADD_CUSTOM_COMMAND in building an executable for my project. I have scoured the internet for a solution but to no avail. Let me illustrate my case:
I need to do a pre-build operation by checking the presence of an already built executable. If it does, then the process would be something like this
SET(MY_EXE ${PROJECT_SOURCE_DIR}/PreBuild/aExecutable.exe)
IF(EXISTS ${MY_EXE})
...EXECUTE_PROCESS(COMMAND MY_EXE <ARGS>) #this one works as expected
ELSE()
...#need to build the executable and then run it as a post-build operation
ENDIF()
Now, I have tried both modes to build the executable and I have failed... Here is what I have done:
###using ADD_CUSTOM_COMMAND
ADD_EXECUTABLE(aExecutable ${MY_SRCS})
TARGET_LINK_LIBRARIES(aExecutable ${MY_LIBS})
GET_TARGET_PROPERTY(EXE_NAME aExecutableLOCATION)
#copy the just built executable to the correct location - Works!!!
#run the executable as post-build operation -- Fails!!!
ADD_CUSTOM_COMMAND(
POST_BUILD
OUTPUT ${PROJECT_SOURCE_DIR}/PreBuild
COMMAND ${EXE_NAME} ${PROJECT_SOURCE_DIR}/InputFile.txt ${PROJECT_SOURCE_DIR}/PreBuild
DEPENDS aExecutable
)
###using ADD_CUSTOM_COMMAND
#This also Fails!!!!
ADD_CUSTOM_TARGET(
dummy ALL
COMMAND ${EXE_NAME} ${PROJECT_SOURCE_DIR}/InputFile.txt ${PROJECT_SOURCE_DIR}/PreBuild
)
###using ADD_CUSTOM_COMMAND, but with dependencies
#This partially works!!!!
ADD_CUSTOM_TARGET(
dummy ALL
COMMAND ${EXE_NAME} ${PROJECT_SOURCE_DIR}/InputFile.txt ${PROJECT_SOURCE_DIR}/PreBuild
)
ADD_DEPENDENCIES(dummy aExecutable)
So amongst all the three combinations, the last combination seems to work in that I can see the required behavior of the executable. However, in VS2010 I get an error message as "....exists with cmd.exe"; Apparently it is trying to build the dummy project "dummy".
What am I doing work here? Conceptually, I think ADD_CUSTOM_COMMAND would be the correct approach for doing this.
Thanks in advance for any help.
Sumit
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.cmake.org/pipermail/cmake/attachments/20120308/8e395b53/attachment.htm>
More information about the CMake
mailing list