我知道有这样的一千个问题,但即使在看过这些问题之后我也在挣扎。
我的目录树
./src/main/cpp/main.cpp
./src/main/cpp/CascadeLoader.cpp
./resources/headers/CascadeLoader.h
如果在main.cpp中我使用
#include "CascadeLoader.cpp"
我的代码有效,但如果我做了
#include "CascadeLoader.h"
我收到
的构建错误undefined reference to CascadeLoader::CascadeLoader()
我的CMakeLists.txt我添加了
cmake_minimum_required(VERSION 2.8)
project( ASLInterpreter )
find_package ( OpenCV REQUIRED )
include_directories( ${OpenCV_INCLUDE_DIRS} )
add_executable( ASLInterpreter src/main/cpp/main.cpp )
target_link_libraries( ASLInterpreter ${OpenCV_LIBS} )
答案 0 :(得分:2)
您没有链接CascadeLoader.cpp文件,这就是您收到未定义的引用错误的原因。
尝试
add_executable( ASLInterpreter src/main/cpp/main.cpp /src/main/cpp/CascadeLoader.cpp)
您还可以将.cpp文件组合在一起,如果您有很多这些文件,这些文件非常有用。
set(include /src/main/cpp/CascadeLoader.cpp
/src/main/cpp/example.cpp)
add_executable( ASLInterpreter src/main/cpp/main.cpp ${include})