我和CMake有一个奇怪的问题.
我正在将Curl导入到我的项目中,所以我为您编写了一个简单的CMakeLists.txt文件摘要.
ADD_LIBRARY(libcurl SHARED IMPORTED )
SET_PROPERTY(TARGET libcurl PROPERTY IMPORTED_LOCATION ../lib/libcurl.lib)
当我运行CMake时,它会为MS VC++生成项目文件(也适用于Linux).然后进入项目文件,我发现curl库(libcurl-NOTFOUND)的错误引用!
如果我将我的代码更改为静态导入:
ADD_LIBRARY(libcurl STATIC IMPORTED )
SET_PROPERTY(TARGET libcurl PROPERTY IMPORTED_LOCATION ../lib/libcurl.lib)
我找到了对../lib/libcurl.lib的正确引用.
你知道为什么会这样吗?
非常感谢你!
我正在尝试将 C++ 项目链接到 RCpp 库;该文件名为Rcpp.so,而不是 linux-default libRcpp.so。此外,图书馆位于非标准位置/usr/lib/R/site-library/Rcpp/libs。
find_library所以我尝试使用和的组合target_link_libraries:
cmake_minimum_required(VERSION 3.8)
project("R-Tests")
find_library(RCPP
NAMES Rcpp.so
HINTS /usr/lib/R/site-library/Rcpp/libs
)
if (NOT RCPP)
message(FATAL_ERROR "Could not find Rcpp - exiting.")
else()
message("Found Rcpp: " ${RCPP})
endif()
# test target
add_executable(rcpptest main.cpp)
target_link_libraries(rcpptest ${RCPP})
Run Code Online (Sandbox Code Playgroud)
配置工作正常,CMake 输出:
Found Rcpp: /usr/lib/R/site-library/Rcpp/libs/Rcpp.so
Run Code Online (Sandbox Code Playgroud)
然而,在构建过程中,CMake 传递-lRcpp给编译器,这会导致编译失败,因为库文件没有命名,libRcpp.so而是Rcpp.so:
[100%] Linking CXX executable rcpptest
/usr/bin/cmake -E cmake_link_script CMakeFiles/rcpptest.dir/link.txt --verbose=1
c++ CMakeFiles/rcpptest.dir/main.cpp.o -o rcpptest -L/usr/lib/R/site-library/Rcpp/libs -Wl,-rpath,/usr/lib/R/site-library/Rcpp/libs -lRcpp
/usr/bin/ld: cannot …Run Code Online (Sandbox Code Playgroud) 我有一个项目,在子目录中包含opencv的预构建版本。例如:
MyProject
* CMakeLists.txt
* src
* third_party
** CMakeLists.txt
** opencv
****包括
**** lib
我想链接到位于third_party目录中的opencv版本。我的问题是,如何通知CMake链接到lib中的预构建dylib文件,并将标头包含在相关的opencv目录中?
cmake_minimum_required(VERSION 2.8.9)
project (myproject)
include_directories(${CMAKE_SOURCE_DIR}/third_party/opencv/include)
link_directories(${CMAKE_SOURCE_DIR}/third_party/opencv/lib)
file(GLOB SOURCES "*.cpp")
add_executable(myproject ${SOURCES})
target_link_libraries(myproject opencv_calib3d opencv_contrib opencv_core opencv_highgui opencv_features2d opencv_highgui opencv_imgproc)
Run Code Online (Sandbox Code Playgroud)