我正在尝试将一些工作内容移植到cmake,而我们使用Windows安装程序(目前使用Inno Setup)执行的操作似乎没有cmake / cpack的必然结果。我们在安装时根据环境变量安装了开发库。因此,包含文件类似"%DEV_INCLUDE_DIR%/include"
,库文件本身就像"%DEV_LIB_DIR%/lib"
,环境变量DEV_INCLUDE_DIR
和DEV_LIB_DIR
位于环境中安装程序运行时的框。因此,安装程序生成的框中的内容无关紧要。
然而,cmake似乎希望在编译时配置所有这些。它使用install
目标为cpack生成package
目标,并使用install
命令添加要与安装程序一起安装的内容。如果我尝试将环境变量放在路径中,它就无法正常工作。如果我试试
install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/Include/" DESTINATION "%DEV_INCLUDE_DIR%/include")
然后当使用NSIS安装程序安装软件包时,%DEV_INCLUDE_DIR%
中的CMAKE_INSTALL_PREFIX
文件夹结束,这绝对不是我想要的。我希望它在安装时将%DEV_INCLUDE_DIR%
替换为该环境变量的值。我找不到任何办法。有谁知道怎么做或者甚至可能?
说实话,我甚至不知道这种情况下的安装前缀(一切都是根据环境变量安装的),但是cmake似乎是围绕着有一个的想法而构建的,我希望如果DESTINATION
命令中的每个install
都是绝对目录,那么安装前缀只会被忽略(或者最坏的情况下,创建一个空目录),但它不会将环境变量视为环境变量或绝对目录。我可以想到告诉cmake将其视为环境变量(例如$ENV{DEV_INCLUDE_DIR}"
)的所有方法都涉及在其构建的盒子上使用环境变量而不是安装它的盒子。有没有办法让cmake / cpack的安装/包装东西在安装时实际使用环境变量?