在cmake from标志中包含外部库
我正在尝试链接一个外部库,我们称之为在cmake from标志中包含外部库,cmake,Cmake,我正在尝试链接一个外部库,我们称之为foo,它不是用cmake编译的。 foo已安装,我可以通过 foo-config --cflags foo-config --libs 我可以很容易地在Makefile中使用上述内容,但我想切换到cmake。 在mycmakelists.txt中创建名为foo的导入库的正确方法是什么 如果可能的话,我想使用现代的cmake方法(使用目标而不是全局cmake变量) 我尝试了以下方法: execute_process( COMMAND foo-config
foo
,它不是用cmake编译的。
foo
已安装,我可以通过
foo-config --cflags
foo-config --libs
我可以很容易地在Makefile中使用上述内容,但我想切换到cmake。
在mycmakelists.txt中创建名为foo
的导入库的正确方法是什么
如果可能的话,我想使用现代的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时,它们不会显示)。
提前谢谢你 我找到了一个解决方法,我不想自己编写整个find模块。 我刚刚创建了一个pkg配置文件,并使用了已经为此编写的cmake模块。
谢谢@Tsyvarev的建议 “没有成功”告诉我们的不多。出了什么问题?什么有效,什么无效?请具体说明出了什么问题。在帖子中包含相关错误消息和/或任何意外行为。在CMake中,库通过
target\u link\u libraries
命令链接。为此设置LINK_FLAGS属性是错误的。@Tsyvarev我理解,但我得到的只是类似于`-Wl,-rpath,/opt/python/3.7.2/lib-L/home/amlucas/.local/lib/python3.7/site-packages/foo-lfoo-Wl,--rpath-Wl,/home/amlucas/.local/lib/python3.7/site-packages/foo-L/home/amlucas/foo/build/lib-Wl,--rpath-Wl,/home/amlucas/foo/build/lib-L/home/amlucas/foo/build/lib-lgsl-lgslcblas-lm-L/opt/python/3.7.2/lib-lpython3.7m-lpthread-ldl-lutil-lm-Xlinker-export dynamic`您需要解析此输出并提取-L
选项。查看FindPkgConfig模块如何为pkg config
output:.@Tsyvarev是的,这正是我所担心的:)好的,非常感谢,我会这样做