C++ 如何让CMAKE在OSX上查找特定版本的lib curl?
问题是:如何让CMAKE设置/使CURL\u INCLUDE\u DIR为“/usr/local/cillar/CURL/7.75.0/INCLUDE/” 不管我做什么,CMAKE只会找到Xcode库的版本/位置 我的CMAKE文件包含:C++ 如何让CMAKE在OSX上查找特定版本的lib curl?,c++,macos,c++11,curl,cmake,C++,Macos,C++11,Curl,Cmake,问题是:如何让CMAKE设置/使CURL\u INCLUDE\u DIR为“/usr/local/cillar/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:
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代码都会导致
“/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/usr/include
注意,使用“include(findcurl)”而不是“find_package(curl REQUIRED)”会得到相同的结果
我已经求助于添加
设置(CMAKE_CXX_标志”-I/usr/local/cillar/curl/7.57.0/include
-L/usr/local/Cell/curl/7.57.0/lib”)
让CMAKE实际使用我想要的lib版本/位置。有没有更好的方法我没有弄清楚?CMAKE
FindCURL
模块(至少在我的3.5.1版本中)在任何地方都没有引用CURL\u ROOT\u DIR
,所以我不相信设置该变量会有任何效果
事实上,FindCURL
模块实际上非常基本,没有提供任何自定义查找位置的方法,这意味着它只能在“标准”路径中查找(例如/usr/lib
,/usr/local/lib
等)
但是,您可以使用which,它接受路径
参数
set(CURL_PATH "/usr/local/Cellar/curl/7.75.0")
find_library(
LIB_CURL
NAMES
curl
PATHS
${CURL_PATH}/lib)
此时将有一个变量${LIB_CURL}
,它指向libcurl
链接库并设置包含路径:
然后,您可以直接链接到${LIB_CURL}
,并手动指定目标的包含路径,例如:
add_executable(
foo
main.cpp)
target_link_libraries(
foo
${LIB_CURL})
target_include_directories(
foo
SYSTEM
PRIVATE "${CURL_PATH}/include")
导入的库目标:
另一种选择是,如果您想让人喜欢,可以使用${LIB\u CURL}
创建一个导入的
库目标,并在该目标上设置接口_INCLUDE\u目录
,以便使用者自动获得包含路径集
add_library(
libcurl
IMPORTED)
set_target_properties(
libcurl
PROPERTIES
IMPORTED_LOCATION "${LIB_CURL}")
set_target_properties(
libcurl
PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${CURL_PATH}/include")
现在你可以直接链接到targetlibcurl
,你的应用程序将自动更新其包含路径
add_executable(
foo
main.cpp)
target_link_libraries(
foo
libcurl)