Я пытаюсь связать внешнюю библиотеку, назовем ее foo
, которая не скомпилирована с cmake. foo
установлено, и я могу получить доступ к его флагам cxx и флагам ссылок через
foo-config --cflags
foo-config --libs
Я могу легко использовать вышеупомянутое в Makefile, но я хочу переключиться на cmake. Каков будет правильный подход для создания импортированной библиотеки с именем foo
в моем CMakeLists.txt?
Я хотел бы использовать современный подход cmake, если это возможно (с использованием целей вместо глобальных переменных cmake).
Я попробовал следующее:
execute_process(
COMMAND foo-config --cflags
RESULT_VARIABLE FOO_EXISTS
OUTPUT_VARIABLE FOO_FLAGS_RAW
OUTPUT_STRIP_TRAILING_WHITESPACE)
execute_process(
COMMAND foo-config --libs
RESULT_VARIABLE FOO_EXISTS
OUTPUT_VARIABLE FOO_LIBS_RAW
OUTPUT_STRIP_TRAILING_WHITESPACE)
if (FOO_EXISTS EQUAL "0")
separate_arguments(FOO_FLAGS UNIX_COMMAND "${FOO_FLAGS_RAW}")
separate_arguments(FOO_LIBS UNIX_COMMAND "${FOO_LIBS_RAW}")
endif()
MARK_AS_ADVANCED(
FOO_FLAGS_RAW
FOO_LIBS_RAW
)
add_library(foo SHARED IMPORTED)
target_compile_options(foo PUBLIC ${FOO_FLAGS})
set_target_properties(foo PROPERTIES
LINK_FLAGS ${FOO_LIBS}
)
, но когда я связываю библиотеку с моей целью, кажется, что флаги компиляции не передаются (они не отображаются, когда я использую VERBOSE = 1). Заранее спасибо!