相关疑难解决方法(0)

CMake导入的库行为

我和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 c++ cmake

14
推荐指数
1
解决办法
9690
查看次数

使用 target_link_libraries 时避免自动添加“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)

c++ cmake

4
推荐指数
1
解决办法
2687
查看次数

如何配置cmake链接到预构建的共享库?

我有一个项目,在子目录中包含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)

cmake

3
推荐指数
1
解决办法
7622
查看次数

标签 统计

cmake ×3

c++ ×2

c ×1