【发布时间】:2018-02-07 19:31:07
【问题描述】:
我有几个第三方库,有些是共享的,有些是静态的,我需要安装共享的。
目前我正在做 find_library,列出所有需要的库并将其传递给 install(FILES ...)。
但是这样.a 和.so 库都被安装了。
install(TARGETS ...) 在RUNTIME、ARCHIVE 等上有一个分隔符。
但我不想为每个库创建一个虚拟目标。
我也不想将库分为共享库和静态库(已经有另一种分离)。
我是否有更好的方法来过滤共享库,而不仅仅是正则表达式文件名?也许库在find_library 之后被视为“更多”的东西,而不仅仅是文件路径,所以我可以从它们那里获取库类型?
【问题讨论】:
-
Maybe libraries are treated as something 'more' than just filepaths after find_library so I somehow can get library type from them?- 不,find_library只是返回一个路径。它不知道库是静态的还是共享的。用正则表达式检查库的类型有什么问题?您可以使用变量CMAKE_SHARED_LIBRARY_SUFFIX 使检查跨平台。 -
@Tsyvarev 我不知道 :D 总的来说它看起来很笨重,但我想这正是 CMake 的作用:)
-
我认为存在误解。 find_library 是获取路径,以便您可以链接到该库。它并不意味着包含用于打包或安装的外部库。
-
@usr1234567 好吧,那我该怎么做呢? :) 我需要找到下载的库并安装它
-
使用其他工具。可能 Docker、虚拟机或类似方法可能会对您有所帮助。 CMake 似乎不适合您的用例。
标签: cmake installation shared-libraries static-libraries