- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试将我的项目链接到我也在其中开发的外部库,该库也使用 CMake 进行构建。当我尝试像这样查找 RelWithDebInfo 或 MinSizeRel 时:
FIND_LIBRARY(PCM_LIBRARY_DEBUG pcm
PATHS @CMAKE_LIBRARY_OUTPUT_DIRECTORY@
@CMAKE_LIBRARY_OUTPUT_DIRECTORY@/Debug
NO_DEFAULT_PATH
)
FIND_LIBRARY(PCM_LIBRARY_RELEASE pcm
PATHS @CMAKE_LIBRARY_OUTPUT_DIRECTORY@
@CMAKE_LIBRARY_OUTPUT_DIRECTORY@/Release
@CMAKE_LIBRARY_OUTPUT_DIRECTORY@/MinSizeRel
@CMAKE_LIBRARY_OUTPUT_DIRECTORY@/RelWithDebInfo
NO_DEFAULT_PATH
)
SET(PCM_LIBRARIES debug ${PCM_LIBRARY_DEBUG} optimized ${PCM_LIBRARY_RELEASE})
最佳答案
不幸的是,这是使用 find_library
的缺点之一。 .如果不引入大量样板代码,就没有简单的方法可以解决这个问题。
这里的问题是,当将文件作为依赖项传递给 target_link_libraries
时,只能区分debug
和 optimized
.如果您需要更细粒度的控制,则必须操作相应的目标属性,如 LINK_INTERFACE_LIBRARIES
直接地。这不仅相当麻烦,还需要详细了解 CMake 的属性系统的内部工作原理。
幸运的是,还有另一种方法:上述限制仅适用于通过文件名指定依赖项时。将它们指定为目标时,不会出现此问题。最明显的例子是如果一个库和依赖于它的可执行文件是从同一源构建的:
add_library(foo_lib some_files.cpp)
add_executable(bar_exe more_files.cpp)
target_link_libraries(bar_exe PUBLIC foo_lib)
find_library
为了找到二进制文件,依赖的可执行文件现在只加载该配置文件,然后可以使用导入的目标,就好像它是来自同一个项目的目标一样。
find_library
。技术(Qt5 是一个突出的例子)。因此,如果您可以随意更改依赖项的 CMakeLists 并且不需要支持非常旧的 CMake 版本(<2.6),那么这可能是可行的方法。
关于cmake - 如何使用 CMake 查找 RelWithDebInfo 或 MinSizeRel 库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21478708/
在我们的项目中,我们使用带有两个不同构建目标的 CMake:调试和发布。 Clion 确实提供了两个额外的构建目标:RelWithDebInfo 和 MinSizeRel。现在,当 Clion 创建
我正在尝试将我的项目链接到我也在其中开发的外部库,该库也使用 CMake 进行构建。当我尝试像这样查找 RelWithDebInfo 或 MinSizeRel 时: FIND_LIBRARY(PCM_
来自 docs page : CMAKE_BUILD_TYPE Specifies the build type on single-configuration generators. This st
我是一名优秀的程序员,十分优秀!