如何使用外部共享库和头文件
**本篇主要参考文档的第六章(26~30页) **
本节仍然继续折腾Hello World。
上一节我们已经完成了libhello动态库的构建以及安装,本节我们的任务很简单:编写一个程序使用我们上一节构建的共享库。
1、准备工作:
请在cmake目录建立t4目录,本节所有资源将存储在t4目录:
cd cmake
mkdir t4
2、重复以前的步骤,建立src目录,编写源文件main.c,内容如下:
#include <hello.h>
int main()
{
HelloFunc();
return 0;
}
编写工程主文件CMakeLists.txt(t4目录下)
PROJECT(NEWHELLO)
ADD_SUBDIRECTORY(src)
编写src/CMakeLists.txt
ADD_EXECUTABLE(main main.c)
上述工作已经严格按照我们前面章节提到的内容完成了,tree一下目录:
3、外部构建
按照习惯,仍然建立build目录,使用cmake ..
方式构建。
过程:
cmake ..
make
构建失败,如果需要查看细节,可以使用第一节提到的方法
make VERBOSE=1
来构建
错误输出为是:
/home/wh/cmake/t4/src/main.c:1:19: fatal error: hello.h: 没有那个文件或目录
4、引入头文件搜索路径
hello.h
位于/usr/include/hello
目录中,并没有位于系统标准的头文件路径,(有人会说了,白痴啊,你就不会include <hello/hello.h>,朋友,要这么干,这一节就没什么可写了,只能选择一个glib或者libX11来写了,这些代码写出来很多朋友是看不懂的)
为了让我们的工程能够找到hello.h头文件,我们需要引入一个新的指令
INCLUDE_DIRECTORIES
,其完整语法为:
INCLUDE_DIRECTORIES([AFTER|BEFORE] [SYSTEM] dir1 dir2