CPack是否有办法将所有内容放在除单个文件之外的顶级目录中?基本上,我使用生成器.Enrich.With<RoleEnricher>()
在.dmg
文件中打包项目。现在,我有DragNDrop
,这正是我想要它做的,它包括在单个顶级目录中的项目。但是,我想在顶层有一个自述文件,解释如何设置适当的环境变量,我不希望这个文件在顶级目录中,这样用户就可以立即看到文件而不是寻找它。有没有办法让除了一个安装在该顶级目录中的文件之外的所有文件?
答案 0 :(得分:0)
我有一个丑陋的工作,但大部分都有效。基本上,设置CPack安装前缀
set(CPACK_PACKAGING_INSTALL_PREFIX "/foo")
注意,额外的/
。这会强制通向根的绝对路径,这意味着在使用生成器foo
时,所有内容都将被放入名为DragNDrop
的文件夹中。接下来,我在CMake文件中有一个标志,用于将自述文件安装到目标..
install(FILES ReadMe.txt DESTINATION ..)
一般来说,这是一个糟糕的主意,在执行make install
时可能会破坏。但是,使用DragNDrop
生成器时,它会正确地将文件放在文件夹foo
之外。无论如何,我用
set(CPACK_DRAGNDROP_README OFF CACHE BOOL "Install the DragNDrop ReadMe?")
if(CPACK_DRAGNDROP_README)
install(FILES ReadMe.txt DESTINATION ..)
endif()
基本上,我不知道在运行CPack时是否可以只执行CMake代码,所以我有一个标志,我在做这个技巧时手动设置。
同样,这很难看,但它现在似乎有效。当然,如果有人有更好的处理方法,请告诉我。