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

Reply via email to