CMakeLists.txt语法(四)
一.简介
使用外部动态库或者静态库,生成可执行文件。
二.外部库
1.外部库头文件
testlib.h存放目录:/usr/local/testLIB
#ifndef TEST_LIB_H
#define TEST_LIB_H#include<stdio.h>
void printFunc();#endif
2.外部库源文件
testlib.c
#include "testlib.h"void printFunc()
{printf("this is printFunc test\n");
}
3.外部库文件
生成库文件的方法,请参考本专栏文章《CMakeLists.txt语法(三)》。
动态库文件testlib.so和静态库文件testlib.a存放目录:/usr/local/testLIB/lib
三.构建工程
1.工程目录下的CMakeLists.txt
PROJECT(uselib)
ADD_SUBDIRECTORY(src bin)
2.子目录下的文件
(1)CMakeLists.txt
- 调用动态库
INCLUDE_DIRECTORIES(/usr/local/testLIB)
LINK_DIRECTORIES(/usr/local/testLIB/lib)
ADD_EXECUTABLE(uselib main.c)
TARGET_LINK_LIBRARIES(uselib libtest.so)
- 调用静态库
INCLUDE_DIRECTORIES(/usr/local/testLIB)
LINK_DIRECTORIES(/usr/local/testLIB/lib)
ADD_EXECUTABLE(uselib main.c)
TARGET_LINK_LIBRARIES(uselib libtest.a)
(2)main.c
#include "testlib.h"void main()
{printFunc();printf("this is use library demo\n");
}
3.外部编译
进入build目录后,执行
cmake ..
make
4.运行编译后的可执行文件
5.查看可执行文件依赖的动态库
ldd ./uselib
四.语法
1.INCLUDE_DIRECTORIES
- 语法:INCLUDE_DIRECTORIES( dir1 dir2 …)
- 功能:向工程添加多个头文件搜索路径,路径之间用空格分开
2.LINK_DIRECTORIES
- 语法:LINK_DIRECTORIES(directory1 directory2 …)
- 功能:添加非标准的共享库搜索路径
3.TARGET_LINK_LIBRARIES
- 语法:TARGET_LINK_LIBRARIES(target library1 library2…)
- 功能:为target添加需要链接的共享库