源码构建的两个阶段
1. Compile
只需要头文件在,不关心是否实现
对应的编译器参数
-I头文件路径
g++ -I/header/directory/include
CMakeList
全局的
INCLUDE_DIRECTORIES(
/header/directory/include
/headeer/directory2/include
)
指定target
target_link_libraries(myTarget /header/directory/include)
2. Link
将声明与实现代码 链接起来。 调用的方法找不到实现代码,报错undefined reference to。
举例
/my/project/directory/main.cpp
/library/directory/libOpencv.so
/library/include/Opencv2/hello.h
/my/project/directory/MyClassFile.cpp
{
include "Opencv2.hello"
int main () {
hello.helloWorld()
}
}
libOpencv.so实现了helloWorld()方法,但link库失败时,报错
undefined reference to helloWorld()