很多文章会说,你可以用 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 值,并且保留从命令行覆盖的能力。
(虽然是个小技巧,但找到答案也花了些时间。如果对你有帮助就给个赞吧 )
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。