MantisBT - CMake | |||||
View Issue Details | |||||
ID | Project | Category | View Status | Date Submitted | Last Update |
0014705 | CMake | CMake | public | 2014-01-17 15:02 | 2014-06-02 08:38 |
Reporter | Brian J. Davis | ||||
Assigned To | |||||
Priority | normal | Severity | minor | Reproducibility | always |
Status | closed | Resolution | no change required | ||
Platform | VisualStudio 2012 x64 | OS | Windows7 | OS Version | Windows7 |
Product Version | CMake 2.8.12.1 | ||||
Target Version | Fixed in Version | ||||
Summary | 0014705: ExternalProject_Add seems to ingores meaning of INTERNAL when passed in as var in -D <var>:<type>=<value> | ||||
Description | ExternalProject_Add seems to ingores meaning of INTERNAL when passed in as var in -D <var>:<type>=<value> see: http://www.cmake.org/cmake/help/v2.8.12/cmake.html#opt:-Dvar:typevalue [^] where type is documented in set as one of: http://www.cmake.org/cmake/help/v2.8.12/cmake.html#command:set [^] <type> may be one of FILEPATH = File chooser dialog. PATH = Directory chooser dialog. STRING = Arbitrary string. BOOL = Boolean ON/OFF checkbox. INTERNAL = No GUI entry (used for persistent variables). and If <type> is INTERNAL, the cache variable is marked as internal, and will not be shown to the user in tools like cmake-gui. This is intended for values that should be persisted in the cache, but which users should not normally change. INTERNAL implies FORCE. I was expecting variable spassed with -DVAR:INTERNAL="value" to be forced in sub project added by using externalproject_add, but it does not seem to. Should it? Is this expected behavior? Is it a bug? | ||||
Steps To Reproduce | See attached zip file or: Create a file with contents in a directory referred to here as TOP # START # ${TOP}/CMakeList.txt ======================================================= # check required version of CMake CMAKE_MINIMUM_REQUIRED(VERSION 2.0) #IF(CMAKE_BACKWARDS_COMPATIBILITY GREATER 2.0.6) # SET(CMAKE_BACKWARDS_COMPATIBILITY 2.0.6 CACHE STRING "Latest version of CMake when this project was released." FORCE) #ENDIF(CMAKE_BACKWARDS_COMPATIBILITY GREATER 2.0.6) if(COMMAND cmake_policy) cmake_policy(SET CMP0003 NEW) endif(COMMAND cmake_policy) include( ExternalProject ) SET( TOP ${CMAKE_CURRENT_LIST_DIR} ) set( SOURCE_DIR ${TOP}/some_external_project ) set( EXTERNAL_PROJECT_GLOBAL_COMPILER_FLAGS -DCMAKE_CXX_FLAGS_INIT:INTERNAL="${CMAKE_CXX_FLAGS_INIT}" -DCMAKE_CXX_FLAGS_DEBUG:INTERNAL="${CMAKE_CXX_FLAGS_DEBUG}" -DCMAKE_CXX_FLAGS_DEBUG_INIT:INTERNAL="${CMAKE_CXX_FLAGS_DEBUG_INIT}" -DCMAKE_C_FLAGS_DEBUG:INTERNAL="${CMAKE_C_FLAGS_DEBUG}" -DCMAKE_C_FLAGS_DEBUG_INIT:INTERNAL="${CMAKE_C_FLAGS_DEBUG_INIT}" CACHE STRING "" FORCE ) set( CMAKE_INSTALL_PREFIX ${CMAKE_CURRENT_LIST_DIR}/install CACHE STRING "" FORCE ) set( INSTALL_PREFIX CACHE STRING "" FORCE ) message( "EXTERNAL_PROJECT_GLOBAL_COMPILER_FLAGS ${EXTERNAL_PROJECT_GLOBAL_COMPILER_FLAGS}" ) add_custom_target( bob ALL echo "HELLO WORLD =====================================================================================================" ) ExternalProject_Add( some_proj # [DEPENDS projects...] # PREFIX ${SOURCE_DIR} # [LIST_SEPARATOR sep] # [TMP_DIR dir] # [STAMP_DIR dir] #--Download step-------------- DOWNLOAD_COMMAND "" # GIT_REPOSITORY ${URI} # GIT_TAG ${GIT_TAG} #--Update/Patch step---------- # UPDATE_COMMAND "" # PATCH_COMMAND "" #--Configure step------------- SOURCE_DIR ${SOURCE_DIR} # CONFIGURE_COMMAND "" # [CMAKE_COMMAND /.../cmake] # CMAKE_GENERATOR ${CMAKE_GENERATOR} # CMAKE_GENERATOR_TOOLSET ${CMAKE_GENERATOR_TOOLSET} CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${INSTALL_PREFIX} -DINSTALL_PREFIX=${INSTALL_PREFIX} ${EXTERNAL_PROJECT_GLOBAL_COMPILER_FLAGS} # [CMAKE_CACHE_ARGS args...] #--Build step----------------- # BINARY_DIR ${BUILD_DIR} # BUILD_COMMAND "" # [BUILD_IN_SOURCE 1] #--Install step--------------- # INSTALL_DIR ${INSTALL_PREFIX} INSTALL_COMMAND "" #--Test step------------------ # [TEST_BEFORE_INSTALL 1] # [TEST_AFTER_INSTALL 1] # [TEST_COMMAND cmd...] #--Output logging------------- # [LOG_DOWNLOAD 1] # [LOG_UPDATE 1] # [LOG_CONFIGURE 1] # [LOG_BUILD 1] # [LOG_TEST 1] # [LOG_INSTALL 1] #--Custom targets------------- # [STEP_TARGETS st1 st2 ...] # STEP_TARGETS bob bob bob bob bob ) # ${TOP}/CMakeList.txt ======================================================= # END Also create the Following CMakeLists.txt file in ${TOP}/some_external_project direcotry # START # ${TOP}/some_external_project/CMakeList.txt =================== # check required version of CMake CMAKE_MINIMUM_REQUIRED(VERSION 2.0) #IF(CMAKE_BACKWARDS_COMPATIBILITY GREATER 2.0.6) # SET(CMAKE_BACKWARDS_COMPATIBILITY 2.0.6 CACHE STRING "Latest version of CMake when this project was released." FORCE) #ENDIF(CMAKE_BACKWARDS_COMPATIBILITY GREATER 2.0.6) if(COMMAND cmake_policy) cmake_policy(SET CMP0003 NEW) endif(COMMAND cmake_policy) # these settings never change even for C or C++ SET(CMAKE_C_FLAGS_DEBUG "/MTd /Z7 /Od") SET(CMAKE_C_FLAGS_RELEASE "/DNDEBUG /MT /O2") SET(CMAKE_C_FLAGS_MINSIZEREL "/DNDEBUG /MT /O2") SET(CMAKE_C_FLAGS_RELWITHDEBINFO "/DNDEBUG /MTd /Z7 /Od") SET(CMAKE_CXX_FLAGS_DEBUG "/MTd /Z7 /Od") SET(CMAKE_CXX_FLAGS_RELEASE "/DNDEBUG /MT /O2") SET(CMAKE_CXX_FLAGS_MINSIZEREL "/DNDEBUG /MT /O2") SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "/DNDEBUG /MTd /Z7 /Od") message( "CMAKE_CXX_FLAGS_INIT:INTERNAL=${CMAKE_CXX_FLAGS_INIT}" ) message( "CMAKE_CXX_FLAGS_DEBUG:INTERNAL=${CMAKE_CXX_FLAGS_DEBUG" ) message( "CMAKE_CXX_FLAGS_DEBUG_INIT:INTERNAL=${CMAKE_CXX_FLAGS_DEBUG_INIT}" ) message( "CMAKE_C_FLAGS_DEBUG:INTERNAL=${CMAKE_C_FLAGS_DEBUG}" ) message( "CMAKE_C_FLAGS_DEBUG_INIT:INTERNAL=${CMAKE_C_FLAGS_DEBUG_INIT}" ) set( CMAKE_INSTALL_PREFIX ${CMAKE_CURRENT_LIST_DIR}/install CACHE STRING "" FORCE ) set( CMD echo "CMAKE_C_FLAGS_DEBUG = ${CMAKE_C_FLAGS_DEBUG}" ) add_custom_target( pete ALL ${CMD} ) # ${TOP}/some_external_project/CMakeList.txt =================== # END The following ouput should be seen in VS output window regarding output pete where last line CMAKE_C_FLAGS_DEBUG is not as expected (/MTd option specified): 3> 2> Creating "x64\Debug\pete\pete.unsuccessfulbuild" because "AlwaysCreate" was specified. 3> 3> 2>CustomBuild: 3> 3> 2> Building Custom Rule C:/projects/CMakeTesting/external_project_test/some_external_project/CMakeLists.txt 3> 3> 2> CMake does not need to re-run because C:\projects\CMakeTesting\external_project_test\build\some_proj-prefix\src\some_proj-build\CMakeFiles\generate.stamp is up-to-date. 3> 3> 2> "CMAKE_C_FLAGS_DEBUG = /MTd /Z7 /Od" | ||||
Additional Information | Attached is zipped version of above files. Any version of VS should do. | ||||
Tags | No tags attached. | ||||
Relationships | |||||
Attached Files | ![]() https://public.kitware.com/Bug/file/5046/external_project_test.zip | ||||
Issue History | |||||
Date Modified | Username | Field | Change | ||
2014-01-17 15:02 | Brian J. Davis | New Issue | |||
2014-01-17 15:02 | Brian J. Davis | File Added: external_project_test.zip | |||
2014-01-20 09:17 | Brad King | Note Added: 0034966 | |||
2014-01-20 09:19 | Brad King | Note Added: 0034967 | |||
2014-01-20 09:22 | Brad King | Note Added: 0034968 | |||
2014-01-20 09:22 | Brad King | Status | new => resolved | ||
2014-01-20 09:22 | Brad King | Resolution | open => no change required | ||
2014-01-20 09:22 | Brad King | Description Updated | bug_revision_view_page.php?rev_id=1368#r1368 | ||
2014-01-20 09:22 | Brad King | Additional Information Updated | bug_revision_view_page.php?rev_id=1370#r1370 | ||
2014-01-20 17:16 | Brian J. Davis | Note Added: 0034979 | |||
2014-01-20 17:16 | Brian J. Davis | Status | resolved => feedback | ||
2014-01-20 17:16 | Brian J. Davis | Resolution | no change required => reopened | ||
2014-01-21 08:45 | Brad King | Note Added: 0034981 | |||
2014-01-22 11:35 | Brian J. Davis | Note Added: 0034987 | |||
2014-01-22 11:35 | Brian J. Davis | Status | feedback => new | ||
2014-01-22 12:09 | Brad King | Status | new => resolved | ||
2014-01-22 12:09 | Brad King | Resolution | reopened => no change required | ||
2014-06-02 08:38 | Robert Maynard | Note Added: 0036090 | |||
2014-06-02 08:38 | Robert Maynard | Status | resolved => closed |
Notes | |||||
|
|||||
|
|
||||
|
|||||
|
|
||||
|
|||||
|
|
||||
|
|||||
|
|
||||
|
|||||
|
|
||||
|
|||||
|
|
||||
|
|||||
|
|