CMake предоставляет альтернативную подпись для библиотек, которые уже скомпилированы:
add_library(
mynamespace::mylib
STATIC # or it could be SHARED
IMPORTED
)
Более подробную информацию см. В официальной документации CMake .
с этим вы сможете добавлять свойства к цели, делая это
set_target_properties(
mynamespace::mylib
PROPERTIES
IMPORTED_LOCATION "path/to/libmylib.a"
)
Здесь неточной точности, если вы используете Windows DLL, вы должны передать путь к файлу DLL в IMPORTED_LOCATION
и установить другое свойство IMPORTED_IMPLIB
, которое указывает на файл .lib
(не очень удобно).
Обратите внимание, что есть также эквивалентные свойства для каждой конфигурации (Debug и Release), для которых необходимо установить другое свойство (IMPORTED_CONFIGURATION
), например, IMPORTED_LOCATION_DEBUG
.
См. Также здесь и здесь в документации.
Чтобы избежать пропуска включаемых файлов, вы также можете уточнить каталог включения, используя INTERFACE_INCLUDE_DIRECTORY
свойство
set_target_properties(
mynamespace::mylib
PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "path/to/mylib/include"
)
При этом при объявлении ссылки с использованием target_link_libraries()
CMake будет считывать информацию об импортированной цели и неявно добавлять каталоги включения.
Официальная документация ссылка .