【发布时间】:2015-01-04 14:29:46
【问题描述】:
在 Ubuntu 中,我下载了一个第三方共享库,mylibrary.so,我将它放在了目录/home/karnivaurus/Libraries 中。我还将相关的头文件myheader.h 放在目录/home/karnivaurus/Headers 中。我现在想使用 CMake 在我的 C++ 代码中链接到这个库。这是我的 CMakeLists.txt 文件:
cmake_minimum_required(VERSION 2.0.0)
project(DemoProject)
include_directories(/home/karnivaurus/Headers)
add_executable(demo demo.cpp)
target_link_libraries(demo /home/karnivaurus/Libraries/mylibrary)
但是,这给了我错误消息:
:-1: error: No rule to make target `/home/karnivaurus/Libraries/mylibrary', needed by `demo'. Stop.
发生了什么事?
【问题讨论】:
-
1.你真的需要像 2.0 一样支持 CMake ancient 吗? 2. 磁盘上的库名不应该是
libmylibrary.so吗?如果不是,您可以尝试将.so扩展名添加到target_link_libraries(),这可能有助于消除混淆。 -
如果我添加
.so扩展名,它会给我错误:cannot find -lmylibrary -
您可以手动链接到库吗,即在不使用 CMake 的项目中?如果是这样,什么命令行可以实现这一点?可能可以从中推断出 CMake 语法。不过,我仍然认为该库的名称不符合 Linux 约定。
-
add_library不是从源代码构建新库吗?我已经得到了编译好的mylibrary.so文件...
标签: c++ cmake shared-libraries libraries