我正在尝试使用ceres solver软件包。在使用自制软件安装之后,我添加了我的CmakeList。txt文件如下:
cmake_minimum_required(VERSION 3.8)
project(myproject)
set(CMAKE_CXX_STANDARD 11)
set(SOURCE_FILES main.cpp)
add_executable(untitled ${SOURCE_FILES})
# add extra include directories
include_directories(/usr/local/include)
include_directories(/usr/local/include/eigen3)
# add extra lib directories
link_directories(/usr/local/lib)
然而,当我尝试使用Ceres包时,我得到了一个链接错误。作为一个非常简单的测试用例,我使用以下代码:
#include "ceres.h"
int main(int argc, char** argv) {
ceres::Problem problem;
return 0;
}
Undefined symbols for architecture x86_64:
"ceres::Problem::Problem()", referenced from:
_main in main.cpp.o
"ceres::Problem::~Problem()", referenced from:
_main in main.cpp.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
通过查看stackoverflow,我现在知道我可能从CMakeLists中漏掉了一些东西。txt,但无论我尝试包括什么,我似乎无法摆脱错误。有什么建议可以解决这个问题吗?
我目前在苹果操作系统10.12.6的CLion上工作。
解决方案后编辑
根据PureVision的建议,我更改了我的CmakeList。txt到下面,一切都很好
cmake_minimum_required(VERSION 3.8)
project(myproject)
set(CMAKE_CXX_STANDARD 11)
set(SOURCE_FILES main.cpp)
# add extra include directories
include_directories(/usr/local/include)
include_directories(/usr/local/include/eigen3)
# add extra lib directories
link_directories(/usr/local/lib)
link_libraries(glog)
link_libraries(ceres)
add_executable(myproject ${SOURCE_FILES})