CMake: Как добавить зависимость, которая не является зависимостью "ссылка" - PullRequest
5 голосов
/ 17 октября 2019

У меня есть проект, настроенный на CMake. У него есть программа и несколько общих библиотек.

  • Некоторые общие библиотеки связаны программой (с помощью оператора target_link_libraries).
  • Некоторые другие общие библиотеки не связаны программой, например, плагины: они загружаются ввремя выполнения через LoadLibrary Win32 API.

Мы используем Visual Studio 2015 в качестве CMake целевого компилятора. Но из этой среды, когда я запускаю свою программу (нажмите F5) после того, как я изменил некоторый код, компилируются только программа и связанные общие библиотеки. «Плагины», загружаемые во время выполнения, не компилируются, и поэтому код не соответствует двоичному.

Есть ли способ добавить «зависимость сборки», говоря, что некоторые библиотеки должны быть скомпилированы, если внедаты, предшествующей выполнению программы, даже если последняя не связывает их?

1 Ответ

6 голосов
/ 17 октября 2019

Для этого есть команда CMake: add_dependencies . Он должен делать то, что вы ищете. Пример:

add_executable(mainTarget SomeSource.cpp)
add_library(linkedLib SomeOtherSource.cpp)
add_library(libToBeLoaded MODULE MoreSource.cpp)

target_link_libraries(mainTarget PRIVATE linkedLib)

# This is it:
add_dependencies(mainTarget libToBeLoaded)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...