为什么在CMAKE脚本中设置失败

时间:2014-01-29 16:54:56

标签: cmake

假设CMAKE_BINARY_DIR = C://a//b//c,如果我运行以下cmake脚本:

cmake_minimum_required( VERSION 2.6 )
set(project_name "hello_cmake")
project(${project_name})
add_executable(hello src/main.cpp)
 if(WIN32)
    set(CMAKE_INSTALL_PREFIX "${CMAKE_BINARY_DIR}/install" CACHE PATH "Installation Directory" )
  else()
    set(CMAKE_INSTALL_PREFIX "/usr/local" CACHE PATH "Installation Directory")
  endif()

如果我在第一次从文件夹CMAKE_INSTALL_PREFIX = C://a//b//c//install中调用CMAKE_INSTALL_PREFIX时未定义cmake ..,我希望C://a//b//c。但是,它不起作用,并且CMAKE_INSTALL_PREFIX被赋予一个奇怪的文件夹:C://Program Files (x86)//hello_cmake。有什么想法吗?

1 个答案:

答案 0 :(得分:3)

这是处理CMAKE_INSTALL_PREFIX的推荐CMake咒语:

IF(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
  SET(CMAKE_INSTALL_PREFIX <path> CACHE PATH <comment> FORCE)
ENDIF(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)

注意集合中的FORCE。显然,CMAKE_INSTALL_PREFIX在调用CMake时很早就设置好了,这意味着在到达这一行时它已经在缓存中设置了。因此需要FORCE。

来源是关于CMake邮件列表的电子邮件讨论:http://www.cmake.org/pipermail/cmake/2010-December/041135.html