- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我目前正在尝试让 CMake 为我的项目运行(在 Windows 上)。我想使用安装所有库的自定义位置。为了让 CMake 知道这条路径,我尝试这样做:
set(CMAKE_PREFIX_PATH D:/develop/cmake/libs)
但是当我试图找到图书馆时
find_library(CURL_LIBRARY NAMES curl curllib libcurl_imp curllib_static)
CMake 找不到它。当我将前缀路径设置为
set(CMAKE_PREFIX_PATH D:/develop/cmake/libs/curl)
...图书馆位于。
所以我的问题是:如何正确配置 CMake 以在自定义位置使用目录结构,如下所示:
D:/develop/cmake/libs/
-> libA
-> include
-> lib
-> libB
-> include
-> lib
-> ...
-> include
-> lib
在“include”中是公共(public)头文件,在“lib”中是编译的库。
希望有人可以帮助我 - 在此先感谢
编辑:我目前的解决方法是,在我搜索库之前执行此操作:
set(CUSTOM_LIBRARY_PATH D:/develop/cmake/libs)
file(GLOB sub-dir ${CUSTOM_LIBRARY_PATH}/*)
foreach(dir ${sub-dir})
if(IS_DIRECTORY ${dir})
set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH};${dir})
endif()
endforeach()
但是那样boost的默认模块直到它才会找到它,因为boost的目录结构有点不同。
boost -> include -> boost-1_50 -> *.hpp
当我将内容移动到“boost-1_50”到“包含”时,可以找到该库,但这样就无法处理多个版本,对吧?
最佳答案
最简单的解决方案可能是将 HINTS
添加到每个 find_*
请求。
例如:
find_library(CURL_LIBRARY
NAMES curl curllib libcurl_imp curllib_static
HINTS "${CMAKE_PREFIX_PATH}/curl/lib"
)
对于 Boost,我强烈建议使用 FindBoost标准模块并将 BOOST_DIR
变量设置为指向您的 Boost 库。
关于c++ - cmake - find_library - 自定义库位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12075371/
这has been asked on SO before甚至还有 a related bug on this in CMAKE .但是,我的问题是变体,答案不明确。 我的问题是我正在使用 MinGW
一指定find_library( name PATHS path1..pathn) 我的问题是如何find_library()将名称与库文件匹配(在 Windows 和 Linux 上)? 例如,我无
CMake的find_library如何处理“libFOO.so.3.2”中的版本号?有些库有从 libFOO.so 到正确版本的符号链接(symbolic link),有些则没有。 当我只使用 fi
在我的项目中,我使用了 differend 3rd 库,这些库已经预先构建并添加到 external-debs 子目录中。我使用多个 FindXXX CMake 脚本来定位这些需求。 当我尝试定位 F
我想出了以下 super 简单的 FindMAGMA.cmake 脚本来查找 MAGMA 库,因为周围没有: # - Find the MAGMA library # # Usage: # fin
是否可以调试find_library来自 CMake? 我想要的是经过考虑的路径列表。我的用例是一个像 find_library (FOO_LIBRARY NAMES fo
我的目标是通过 CMake 链接库/usr/lib/libboinc_api.a 和/usr/lib/libboinc.a。因此,我使用不同 FIND_XXXX 模块中给出的示例并尝试: FI
我目前正在创建一组应该在 使用 CLion 的不同项目。我的问题是如何实现这个 功能。 到目前为止,我研究了以下相关问题 这并没有真正解决我的问题: CMake link to external li
在我的 CMake 脚本中,我必须链接到一个库,该库可以有两个不同的名称,具体取决于缓存变量。 库可以是 libMyLibrary.a 或 libMyLibraryCUDA.a,具体取决于 CUDA_
我正在尝试使用来自 ctypes 的命令 find_library() 但我收到一个错误,我不明白它的原因。我在 Windows 上工作 这是代码: import ctypes from ctypes
我目前正在尝试让 CMake 为我的项目运行(在 Windows 上)。我想使用安装所有库的自定义位置。为了让 CMake 知道这条路径,我尝试这样做: set(CMAKE_PREFIX_PATH D
我正在使用 CMake 2.8.2版本。该项目使用了大量外部文件和自定义库(无法通过 find_package 获得),并且有一长串元素,如下所示: find_path(XXX_INCLUDE_DIR
在 cmake 的 find_library 函数的文档中,我们有 The CMake variable CMAKE_FIND_ROOT_PATH specifies one or more dire
这个问题在这里已经有了答案: How to strip trailing whitespace in CMake variable? (4 个回答) 4年前关闭。 我的 CMakeLists.txt
尽管阅读了文档,但我无法弄清楚 CMake 的命令是否为 find_library是否搜索 LD_LIBRARY_PATH 中列出的目录。 我的测试给出了不同的结果。 最佳答案 来自文档(我没有转载与
我用了 list存储库的名称,我想使用 foreach和 find_library找到每个库的完整路径。但是find_library刚刚返回第一个库的路径。我查了 this post ,但问题依然存在
我有一个名为 mylib 的 catkin 库,我用 catkin build 构建了它此外,我有一个节点,其中使用了该库中的函数。我像往常一样在节点的 CMakeLists.txt 中启用此链接:
我在默认安装了 glew 1.10 的 Ubuntu 14.04 上。我想使用最新的 glew 1.13,但是 sudo apt-get remove libglew1.10 不是一个选项,因为 ub
我正在尝试学习 CMake。我有《掌握 CMake》一书,我正在尝试完成我的第一个“简单”教程。 Using CMake: Hello World Example 我顺利地完成了第一部分,但是当我尝试
[注意:这几乎是 Linking to a library that hasn't been built yet with CMake 的副本, 但在这种情况下,未构建的库来自 ADD_CUSTOM_
我是一名优秀的程序员,十分优秀!