CPack不包含依赖项的已编译代码和标头

时间:2019-03-18 17:21:12

标签: c linux cmake cpack

我正在编写一个带有两个子项目和一个依赖项的C库。依赖项是一个Git子模块,并且具有自己的CMakeLists.txt文件。 foobar是我的项目,baz是依赖项。当我在项目上运行make package时,foo和bar将其放入TGZ文件中,而baz则没有。

my_project
|-foo
| |-CMakeLists.txt
|-bar
| |-CMakeLists.txt
|-external
| |-CMakeLists.txt
| |-baz
| | |-CMakeLists.txt
cmake_minimum_required(VERSION 3.0 FATAL_ERROR)
project(my_project LANGUAGES C VERSION 0.0.1)

add_subdirectory(foo)
add_subdirectory(bar)

add_subdirectory(external)

set(CPACK_INSTALL_CMAKE_PROJECTS
    "foo;foo;ALL;/"
    "bar;bar;ALL;/"
    "external/baz;baz;ALL;/"
)
include(CPack)
$ make package
$ tar tvf my_project-0.0.1-Linux.tar.gz
my_project-0.0.1-Linux/include
my_project-0.0.1-Linux/include/foo.h
my_project-0.0.1-Linux/include/bar.h
my_project-0.0.1-Linux/lib
my_project-0.0.1-Linux/lib/libfoo.a
my_project-0.0.1-Linux/lib/libbar.a

make package的输出显示baz已被处理(Run preinstall target for: bazInstall project: baz),并且该过程失败,并显示一条错误消息,指出如果我更改文件夹,则找不到文件夹。 CMakeLists.txt中的external/baz行。

我知道这可能不是组织项目的最佳方法,我愿意提出改进建议,但是我的直接问题是链接到我的库所需的代码未打包。我还应该尝试什么?

提前谢谢!

0 个答案:

没有答案