2016-10-11 37 views
0

有没有一种方法让CPack将所有内容都放在除了单个文件之外的顶级目录中?基本上,我使用生成器DragNDrop.dmg文件中打包项目。现在,我有set(CPACK_INCLUDE_TOPLEVEL_DIRECTORY ON),这正是我想要它做的,这是包括在一个单一的顶级目录的项目。不过,我想在顶层有一个自述文件,它解释了如何设置适当的环境变量,并且我不希望这个文件位于顶层目录中,这样用户就可以立即看到文件狩猎它。有没有办法让每个文件都安装在顶层目录下?有没有一种方法让CPack将所有内容都放在顶层目录中,除了单个文件?

+0

你如何“告诉”CPack打包什么?你在'CMakeLists.txt'中使用了'install()'调用吗? – zaufi

回答

0

我有一个工作,这是丑陋的,但主要是作品。基本上,设置CPack安装前缀

set(CPACK_PACKAGING_INSTALL_PREFIX "/foo") 

注意,额外的/。这会强制执行根目录的绝对路径,这意味着当使用生成器DragNDrop时,所有内容都将放入名为foo的文件夹中。接下来,我有一个标志,在安装自述目的地..

install(FILES ReadMe.txt DESTINATION ..) 

一般CMake的文件中,这是一个可怕的想法,做一个make install时,可能会打破东西。但是,使用DragNDrop生成器时,它将正确地将该文件放在文件夹foo的外部。反正,我旗这在CMake的与

set(CPACK_DRAGNDROP_README OFF CACHE BOOL "Install the DragNDrop ReadMe?") 
if(CPACK_DRAGNDROP_README) 
    install(FILES ReadMe.txt DESTINATION ..) 
endif() 

文件基本上,我不知道是否有可能运行CPack当仅执行CMake的代码,所以我必须做这一招的时候,我手动设置的标志。

再一次,这是丑陋的,但它似乎现在工作。当然,如果有人有更好的方式来处理这个问题,请告诉我。

相关问题