Bill Hoffman wrote:
So, you are saying that "${CMAKE_BINARY_DIR}/interpreter/int.cmake"
changes and cmake does not re-run? Can you look in
CMakeFiles/Makefile.cmake? Should be in your binary tree, and it
should have int.cmake as a CMAKE_MAKEFILE_DEPENDS.
If you do a make VERBOSE=1 it should say something like:
Re-run cmake file: CMakeFiles/cmake.check_cache older than:
${CMAKE_BINARY_DIR}/interpreter/int.cmake.
From my previous post?
Yes, but I am saying that int.cmake is NOT updated when I run wmake.
That right there is our disconnect. What causes int.cmake to be updated is:
EXECUTE_PROCESS(
COMMAND ${TRANSLATOR} -cmakefile "${CMAKE_SOURCE_DIR}/source/int.ex"
WORKING_DIR ${CMAKE_CURRENT_BINARY_DIR} )
That causes int.cmake to be updated, not anything I am doing. Now, that
is inside of an IF statement:
IF( EU_CORE_UPDATE )
MESSAGE( "Translating interpreter..." )
EXECUTE_PROCESS(
COMMAND ${TRANSLATOR} -cmakefile "${CMAKE_SOURCE_DIR}/source/int.ex"
WORKING_DIR ${CMAKE_CURRENT_BINARY_DIR} )
ENDIF()
Now, EU_CORE_UPDATE is initially set to 0, however, I have the FOREACH
loop checking to see if any of my source files, such as parser.e, are
newer than the int.cmake, meaning that the source has changed since the
last EXECUTE_PROCESS has taken place and that a new EXECUTE_PROCESS has
to take place to make the translated sources be up to date... The
FOREACH loop I use to detect this is:
SET( EU_CORE_UPDATE 0 )
FOREACH( file ${EU_CORE_FILES} )
IF( "${CMAKE_SOURCE_DIR}/source/${file}" IS_NEWER_THAN
"${CMAKE_CURRENT_BINARY_DIR}/int.cmake" )
SET( EU_CORE_UPDATE 1 )
ENDIF()
ENDFOREACH()
Jeremy
_______________________________________________
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