Невозможно связать статическую библиотеку с помощью CMake - PullRequest
0 голосов
/ 29 ноября 2018

У меня есть следующая структура проекта.

<root
  CMakeLists.txt
  <exec_folder
    CMakeLists.txt
    ...
  <lib_folder
    CMakeLists.txt
    ...

В exec_folder у меня есть исполняемый файл CLI, поэтому цель была создана в дополнительном каталоге.

exec_folder CMakeLists.txt

...
add_executable (foo ...)
target_link_libraries(foo bar)

lib_folder CMakeLists.txt

...
add_library(bar ...)

А теперь у меня ошибка ...cannot open file 'XXX.lib'.Обычно я использую add_subdirectory, когда каталог библиотеки вложен в основной, но теперь они находятся на одном уровне.

1 Ответ

0 голосов
/ 29 ноября 2018

Я просто догадываюсь здесь, потому что вы не показываете, что содержится в корневом CMakeLists.txt.Но на основании заявления о том, что вы не использовали add_subdirectory() для библиотеки, вам необходимо внести следующие изменения.

Корневой файл CMakeLists.txt должен содержать оба:

add_subdirectory(exec_folder)
add_subdirectory(lib_folder)

В противном случае панель не будет построена, и target_link_libraries(foo bar) будет просто искать случайные bar.lib.Если ошибка на самом деле XXX.lib, у вас есть большие проблемы.

...