如何让 CMAKE 在 OSX 上找到特定版本的 lib curl?
How to make CMAKE find specific version of lib curl on OSX?
>问题是:如何让 CMAKE 设置/使CURL_INCLUDE_DIR设置为"/usr/local/Cellar/curl/7.75.0/include/"?
无论我做什么,CMAKE 都只能找到 Xcode 库版本/位置。
我的 CMAKE 文件包含:
set(CURL_ROOT_DIR /usr/local/Cellar/curl/7.75.0/include/)
find_package(curl REQUIRED)
message(STATUS ">>> CURL Dir Found: " ${CURL_INCLUDE_DIR})
无论我尝试过什么,上面的 CMAKE 代码都会导致"CURL_INCLUDE_DIR"
"/Applications/Xcode.app/Content/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/usr/include
请注意,使用"include(findcurl)"而不是"find_package(curl REQUIRED)"会得到相同的结果。
我已经求助于添加
set(CMAKE_CXX_FLAGS "-I/usr/local/Cellar/curl/7.57.0/include -L/usr/local/Cellar/curl/7.57.0/lib")
让 CMAKE 实际使用我想要的库版本/位置。有没有更好的方法,我无法弄清楚?
cmakeFindCURL
模块(至少在我拥有的版本中,3.5.1)在任何地方都没有引用CURL_ROOT_DIR
,所以我认为设置该变量不会有任何影响。
实际上,FindCURL
模块确实非常基本,并且不提供任何自定义查找位置的方法,这意味着它将仅在"标准"路径中查找(例如/usr/lib
,/usr/local/lib
等)
但是,您可以使用find_library
,它需要一个PATHS
参数。
set(CURL_PATH "/usr/local/Cellar/curl/7.75.0")
find_library(
LIB_CURL
NAMES
curl
PATHS
${CURL_PATH}/lib)
此时,您将有一个指向libcurl
位置的可变${LIB_CURL}
链接到库并设置包含路径:
然后,您可以直接链接到${LIB_CURL}
,并手动指定目标的包含路径,例如:
add_executable(
foo
main.cpp)
target_link_libraries(
foo
${LIB_CURL})
target_include_directories(
foo
SYSTEM
PRIVATE "${CURL_PATH}/include")
导入的库目标:
另一种选择,如果你想花哨,是使用${LIB_CURL}
创建一个IMPORTED
库目标,并在该目标上设置INTERFACE_INCLUDE_DIRECTORIES
,以便使用者自动设置包含路径。
add_library(
libcurl
IMPORTED)
set_target_properties(
libcurl
PROPERTIES
IMPORTED_LOCATION "${LIB_CURL}")
set_target_properties(
libcurl
PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${CURL_PATH}/include")
现在,您将能够直接链接到目标libcurl
,并且您的应用程序将自动更新其包含路径
add_executable(
foo
main.cpp)
target_link_libraries(
foo
libcurl)
- /lib/libstdc++.so.6:没有可用的版本信息
- 在C LIB和程序中具有相同接口的类.EXE版本是
- opengl32.lib如何在Windows(仅1.1版本)上工作?它是否真正实现了OpenGL函数
- 在应用程序中加载QT LIB(不同的版本)
- 当 Windows SDK 版本设置为 15063.13 时"LNK1104 Cannot open file 'kernel32.lib' "
- 开发C++应用程序,目标服务器有不同的std lib版本,最佳实践是什么
- 如何让 CMAKE 在 OSX 上找到特定版本的 lib curl?
- progam (C++ ABI 1002) 和 lib (C++ ABI 1009) 构建版本不匹配:
- (CMake 内部版本)致命错误LNK1181:无法打开输入文件'glew.lib'
- 升级NDK版本时,我应该重建所有LIB吗?
- libpng的.lib的正确版本
- 内部在具有不同版本的Visual Studio的静态LIB中使用STL
- 在C++中,可以链接到使用早期版本的Visual Studio编译的.lib文件
- Visual Studio 错误:LNK1104:无法打开文件'kernel32.lib' - 仅在 WP8 项目/Win32 版本中
- Visual Studio 2012附带的Dinkumware STL Lib的哪个版本
- /usr/lib/x86_64-linux-gnu/libstdc++.so.6:未找到版本 CXXABI_1.3.8'
- 在我的Linux中调用了哪个版本的close(),来自posix lib或内核
- 令人费解的Boost.Python 1.54(调试版本)对Windows上的Python27.lib的依赖关系
- 如何修复:/usr/lib/libstdc++.so.6:未找到版本"GLIBCXX_3.4.15"
- VS2013 LNK1104要求不同版本的外部lib(boost)