CMAKE_INSTALL_PREFIX如何设置默认值,并且保留从命令行覆盖的能力?
Posted 卷云舒
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CMAKE_INSTALL_PREFIX如何设置默认值,并且保留从命令行覆盖的能力?相关的知识,希望对你有一定的参考价值。
很多文章会说,你可以用 set(CACHE)
,但实际上因为CMAKE_INSTALL_PREFIX
总会有一个默认值,所以根本不会生效;
如果你用 set(CACHE FORCE)
,那么将失去从命令行覆盖设置的能力。
正确的方式应该是:
if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
set(CMAKE_INSTALL_PREFIX ${CMAKE_SOURCE_DIR}/MyInstallPath CACHE PATH "My default install prefix" FORCE)
endif()
CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT
:这是一个CMake的内部变量,不需要你自己维护。
这样就可以完美的做到:提供默认 prefix 值,并且保留从命令行覆盖的能力。
(虽然是个小技巧,但找到答案也花了些时间。如果对你有帮助就给个赞吧 )
以上是关于CMAKE_INSTALL_PREFIX如何设置默认值,并且保留从命令行覆盖的能力?的主要内容,如果未能解决你的问题,请参考以下文章
cmake基础教程(13)cmake安装位置前缀CMAKE_INSTALL_PREFIX
是否可以在 postinst 中读取 CMAKE_INSTALL_PREFIX 变量的值?
CMAKE_INSTALL_PREFIX 的介子等价物是啥?
cpack and install(CODE ...) - CPACK_PACKAGING_INSTALL_PREFIX vs CMAKE_INSTALL_PREFIX
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..