The following issue has been SUBMITTED. ====================================================================== http://public.kitware.com/Bug/view.php?id=14294 ====================================================================== Reported By: Greg Coombe Assigned To: ====================================================================== Project: CMake Issue ID: 14294 Category: CMake Reproducibility: always Severity: major Priority: normal Status: new ====================================================================== Date Submitted: 2013-07-15 20:17 EDT Last Modified: 2013-07-15 20:17 EDT ====================================================================== Summary: Command-line options overwritten by re-run Description: If I specify a command-line option using the "option()" function and provide it on the command line along with CMAKE_<lang>_COMPILER option (specified without full path), it is overwritten.
Steps to Reproduce: 1. Make a small CMakeLists.txt: cmake_minimum_required(VERSION 2.8.11) option(RERUN_TEST "Re-run me!" OFF) message(STATUS "Re-run test variable is " ${RERUN_TEST}) 2. Run twice with both the option specified, as well as the compiler: $ cmake -D RERUN_TEST=ON -D CMAKE_CXX_COMPILER=g++ CMakeLists.txt -- The C compiler identification is GNU 4.6.3 -- The CXX compiler identification is GNU 4.6.3 -- Check for working C compiler: /usr/bin/cc -- Check for working C compiler: /usr/bin/cc -- works -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Check for working CXX compiler: /usr/bin/g++ -- Check for working CXX compiler: /usr/bin/g++ -- works -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Re-run test variable is ON -- Configuring done -- Generating done $ cmake -D RERUN_TEST=ON -D CMAKE_CXX_COMPILER=g++ CMakeLists.txt -- Re-run test variable is ON -- Configuring done You have changed variables that require your cache to be deleted. Configure will be re-run and you may have to reset some variables. The following variables have changed: CMAKE_CXX_COMPILER= g++ -- The C compiler identification is GNU 4.6.3 -- The CXX compiler identification is GNU 4.6.3 -- Check for working C compiler: /usr/bin/cc -- Check for working C compiler: /usr/bin/cc -- works -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Check for working CXX compiler: /usr/bin/g++ -- Check for working CXX compiler: /usr/bin/g++ -- works -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Re-run test variable is OFF -- Configuring done -- Generating done So now we've built the project without the command-line option. 3. Interestingly, note that using the full path of the compiler doesn't have the same behavior: $ cmake -D RERUN_TEST=ON -D CMAKE_CXX_COMPILER=/usr/bin/g++ CMakeLists.txt -- Re-run test variable is ON -- Configuring done -- Generating done Additional Information: Speculation: It appears that CMake is writing the CMAKE_<lang>_COMPILER value to the cache before expanding it, then interpreting the different value as requiring a re-run. This re-run ignores the command-line options (maybe because the cache is nuked: http://public.kitware.com/Bug/view.php?id=13756). ====================================================================== Issue History Date Modified Username Field Change ====================================================================== 2013-07-15 20:17 Greg Coombe New Issue 2013-07-15 20:17 Greg Coombe File Added: CMakeLists.txt ====================================================================== -- 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://public.kitware.com/cgi-bin/mailman/listinfo/cmake-developers