diff --git a/src/App/CMakeLists.txt b/src/App/CMakeLists.txt index 703d48070b..59af9e6d66 100644 --- a/src/App/CMakeLists.txt +++ b/src/App/CMakeLists.txt @@ -288,6 +288,8 @@ add_library(FreeCADApp SHARED ${FreeCADApp_SRCS}) target_link_libraries(FreeCADApp ${FreeCADApp_LIBS}) +add_dependencies(FreeCADApp fc_version) + SET_BIN_DIR(FreeCADApp FreeCADApp) if(WIN32) diff --git a/src/Build/CMakeLists.txt b/src/Build/CMakeLists.txt index 403ffcb2c4..615cdea573 100644 --- a/src/Build/CMakeLists.txt +++ b/src/Build/CMakeLists.txt @@ -6,25 +6,26 @@ set(PACKAGE_WCURL "$WCURL$") # If the sources don't include a Version.h then create one if (NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/Version.h) -configure_file(${CMAKE_CURRENT_SOURCE_DIR}/Version.h.cmake - ${CMAKE_CURRENT_BINARY_DIR}/Version.h.in -) - -EXECUTE_PROCESS(COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/src/Tools/SubWCRev.py - --srcdir=${CMAKE_SOURCE_DIR} --bindir=${CMAKE_BINARY_DIR} - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} - OUTPUT_STRIP_TRAILING_WHITESPACE) - -fc_copy_file_if_different( - "${CMAKE_CURRENT_BINARY_DIR}/Version.h.out" - "${CMAKE_CURRENT_BINARY_DIR}/Version.h" -) - -# as fallback if Version.h isn't created for any reason -if (NOT EXISTS ${CMAKE_CURRENT_BINARY_DIR}/Version.h) - set(PACKAGE_WCREF ${PACKAGE_VERSION_PATCH}) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/Version.h.cmake - ${CMAKE_CURRENT_BINARY_DIR}/Version.h - ) -endif (NOT EXISTS ${CMAKE_CURRENT_BINARY_DIR}/Version.h) + ${CMAKE_CURRENT_BINARY_DIR}/Version.h.in) + + add_custom_command( + OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/Version.h + COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_BINARY_DIR}/Version.h.out + ${CMAKE_CURRENT_BINARY_DIR}/Version.h + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} + DEPENDS version_check) + + add_custom_command( + OUTPUT version_check + COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/src/Tools/SubWCRev.py + --srcdir=${CMAKE_SOURCE_DIR} --bindir=${CMAKE_BINARY_DIR} + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) + + ADD_CUSTOM_TARGET(fc_version DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/Version.h) + +else (NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/Version.h) + + ADD_CUSTOM_TARGET(fc_version DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/Version.h) + endif (NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/Version.h)