我正在编写一个带有两个子项目和一个依赖项的C库。依赖项是一个Git子模块,并且具有自己的CMakeLists.txt文件。 foo
和bar
是我的项目,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: baz
和Install project: baz
),并且该过程失败,并显示一条错误消息,指出如果我更改文件夹,则找不到文件夹。 CMakeLists.txt中的external/baz
行。
我知道这可能不是组织项目的最佳方法,我愿意提出改进建议,但是我的直接问题是链接到我的库所需的代码未打包。我还应该尝试什么?
提前谢谢!