我有一个名为myproject的项目,它有一个构建目录myhome/myproject/build。
我有一个名为libmylibrary.so的库,它位于myhome/folder/lib中,头文件位于myhome/folder/include中
然后我在myhome/myproject中有一个CMakeLists.txt,它看起来像这样:
cmake_minimum_required(VERSION 3.5.1)
project (myproject)
file(GLOB SOURCES "src/*.cpp")
add_executable(myproject ${SOURCES})
find_library(MYLIB mylibrary REQUIRED)
target_link_libraries(myproject PRIVATE mylibrary)我在build目录中运行cmake ../,然后运行make,我得到:
/usr/bin/ld: cannot find -lmylibrary
collect2: error: ld returned 1 exit status我就是不明白这怎么会这么难。我遗漏了什么?我尝试了所有随机但命名极其相似的CMake指令的组合,都没有成功(也没有关于成功或失败的原因的信息,所以这只是一次试错)。
我如何才能知道我的库在哪里,这样CMake就可以找到它,而不需要在CMake脚本中硬编码它?谢谢。
谢谢
发布于 2019-02-10 06:15:55
有关库位置的提示CMake,可以将CMAKE_LIBRARY_PATH变量设置为包含所需库的目录:
cmake -DCMAKE_LIBRARY_PATH=myhome/folder/lib <other-cmake-arguments>或者,如果你的库包含在lib/子目录下,你可以使用CMAKE_PREFIX_PATH变量来提示更高的目录:
cmake -DCMAKE_PREFIX_PATH=myhome/folder/lib <other-cmake-arguments>后一种方式还会提示其他find_*命令,有关更多信息,请参阅该my answer。
https://stackoverflow.com/questions/54610780
复制相似问题