如何将变量传递给cpack?

Mac*_*Mac 5 cmake cpack

我有一个 cmake 项目,其中一个安装目标是文件集合。此文件根据配置(发布、调试...)而变化。我希望能够像这样安装文件:

install(DIRECTORY $<TARGET_FILE_DIR:tgt>
    DESTINATION bin
    COMPONENT files)
Run Code Online (Sandbox Code Playgroud)

但是 cmake 不支持。生成器变量不适用于 DIRECTORY。所以我想知道是否有办法将目录保存在某处。缓存或文件,然后将其加载到 cpack 中。

所以我想问题是如何将变量从 cmake 传递给 cpack?

eva*_*low 7

这是一个相当晚的答案,但我碰巧遇到了这个问题,试图解决一个有些不同的问题,该问题也可以概括为:“如何将变量传递给 CPack?” CPackDeb.cmake就我而言,我是从复制到工作区的自定义版本进行此调用的:

find_program(OPKG_CMD NAMES opkg-build HINTS "${OPKG_HINT}")
#                                             ^^^^^^^^^^^^
#                                 This is what I wanted to pass to CPack 
Run Code Online (Sandbox Code Playgroud)

OPKG_HINT我在我的顶级 包含的文件中进行设置CMakeLists.txt,但它没有传递到cpack; 上面的find_program()调用看到 的空字符串OPKG_HINT

结果证明解决方案非常简单:只需CPACK_在变量名称前面添加即可!

如果我这样做CMakeLists.txt

set(CPACK_OPKG_HINT "${_sysroot_top}/aarch64-poky-linux/usr/bin")
Run Code Online (Sandbox Code Playgroud)

然后我可以将其放入我的CPackDeb.cmake文件中并且工作正常:

find_program(OPKG_CMD NAMES opkg-build HINTS "${CPACK_OPKG_HINT}")
Run Code Online (Sandbox Code Playgroud)

不管怎样,这对于OP来说是一个XY问题,但是......如果你真的需要在CMake时以可访问的方式设置一个变量cpack,那么在变量名前加上前缀CPACK_似乎可以解决问题很好...