从CMakeLists.txt文件设置CMAKE_INSTALL_PREFIX

时间:2016-09-14 03:15:01

标签: cmake

如何在我的根CMakeLists.txt文件中设置CMAKE_INSTALL_PREFIX?

我一直在做

cmake_minimum_required(VERSION 2.8)
project(MyProject)

# Set default install prefix
set(CMAKE_INSTALL_PREFIX ${CMAKE_SOURCE_DIR})

希望安装将发往源树中的文件夹。也就是说,

install(TARGETS my_exe DESTINATION bin/)

会安装到${CMAKE_SOURCE_DIR}/bin/。相反,它一直试图写入/usr/local/bin(Ubuntu 14.04的默认值)。

我尝试了this question的答案,但是当我检查CMakeCache.txt时,我仍然将标准usr/local/作为我的CMAKE_INSTALL_PREFIX。

我唯一可行的解​​决方案是

install(TARGETS my_exe DESTINATION "${CMAKE_SOURCE_DIR}/bin/")

但这会删除用户指定要安装的bin目录的位置的能力。

tl; dr我希望make install默认自动安装到${CMAKE_SOURCE_DIR},而不是/usr/local/

1 个答案:

答案 0 :(得分:17)

CMake开发人员suggestCMakeLists.txt内使用给定模式更改 CMAKE_INSTALL_PREFIX 默认值:

# Use this snippet *after* PROJECT(xxx):
IF(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
  SET(CMAKE_INSTALL_PREFIX <path> CACHE PATH <comment> FORCE)
ENDIF(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)

使用该方法

# Use this snippet *before* PROJECT(xxx):
SET(CMAKE_INSTALL_PREFIX <path> CACHE PATH <comment>)

不推荐

  

..解决方案取决于PROJECT命令的实现细节,并且非常脆弱,因为它对某些版本的CMake“意外”工作。我认为它根本不是一种选择。