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 ..

如何设置主活动中显示的默认片段?