установить проблему EXPORT для совместно используемой библиотеки с зависимостями - PullRequest
4 голосов
/ 21 марта 2011

Я пытаюсь собрать две библиотеки (скажем, A и B ) из одного проекта. Я использую команду add_subdirectory cmake в корневом файле cmake. B зависит от A .

Когда я пытаюсь добавить

INSTALL (TARGETS B EXPORT B
    PUBLIC_HEADER DESTINATION "include/B"
    LIBRARY DESTINATION "lib"
    ARCHIVE DESTINATION "lib")

INSTALL (EXPORT B DESTINATION "./")

CMake предупреждает меня об ошибке в соответствии с INSTALL (EXPORT .... Это печатает:

CMake Error: INSTALL (EXPORT "B" ...) включает в себя цель "B", для которой требуется цель "A", которой нет в наборе экспорта.

1 Ответ

4 голосов
/ 21 марта 2011

Сообщение об ошибке уже говорит вам, что вы экспортируете только один проект, в то время как это зависит от другого проекта.Самое простое решение - экспортировать оба проекта.Если они оба собраны по одному и тому же CMakeLists.txt, вы можете просто вызвать

install( TARGETS A B ... )

Если нет, то, вероятно, у вас есть CMakeLists.txt верхнего уровня (где вы используете add_subdirectory).Там вы можете установить цель установки, назовем ее «MyInstall».И в ваших подкаталогах обратитесь к этой цели установки верхнего уровня

В вашем подкаталоге ...

install( TARGETS A EXPORT MyInstall ... )

аналогично цели B, а затем вы экспортируете "MyInstall" вашего верхнего уровняCMakeLists.txt:

install( EXPORT MyInstall ... )
...