如何在我的根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/
。
答案 0 :(得分:17)
CMake开发人员suggest在CMakeLists.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“意外”工作。我认为它根本不是一种选择。