Я пишу библиотеку 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
), и процесс завершается ошибкой, сообщая, что не может найти папку, если я изменяю строку external/baz
в CMakeLists .txt.
Я понимаю, что это не лучший способ организовать мой проект, и я открыт для предложений по его улучшению, но моя непосредственная проблема заключается в том, что код, необходимый для ссылки на мою библиотеку, не упаковывается. Что еще я должен пытаться?
Заранее спасибо!