cmake - связывает пользовательскую библиотеку из каталога более высокого уровня - PullRequest
1 голос
/ 29 сентября 2011

Я изучаю cmake и очень быстро учусь. Тем не менее, документация не до нуля. Учебные пособия полезны, но только так далеко.

У меня есть существующий проект, который я хочу преобразовать в cmake.

Структура проекта в настоящее время выглядит следующим образом:

obsys / obsys / client / {клиентские файлы} obsys / server / {серверные файлы} obsys / Utils / включают obsys / Utils / ЦСИ

Я создал файлы CMakeLists.txt на каждом уровне.

Верхний уровень выглядит сейчас так:

make_minimum_required (VERSION 2.6)
project (osys)
add_subdirectory (server)
add_subdirectory (utils)

Внутри утилит у меня есть CMakeLists.txt, который содержит:

include_directories ("${PROJECT_SOURCE_DIR}/utils/include")
add_subdirectory (src)

и внутри каталога utils src файл CMakeLists.txt содержит:

add_library(utils myException.cpp)

Сервер должен ссылаться на утилиты. Это CMakeLists.txt содержит:

make_minimum_required (VERSION 2.6)
project (server)
include_directories ("../utils/include")
add_executable(serv serv.cpp)
add_subdirectory("../utils/src" utils)
target_link_libraries(obbsd utils)

Идея этого макета заключается в том, что я надеялся, что смогу собрать все это через Makefile верхнего уровня. Или перейдите на сервер или клиент и скомпонуйте их. Так не получается. Каков рекомендуемый способ сделать это?

1 Ответ

1 голос
/ 29 сентября 2011

Хорошо, теперь у меня все работает.

Проблема в том, что моя строка add_executable не перечисляла все исходные файлы. Похоже, Линк жаловался на какое-то отношение к утилитам, из-за чего я подумал, что он не нашел библиотеку, хотя на самом деле это было.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...