一.总起
编译链接C语言时需要指定
- 源文件
- 头文件
- 库文件(.a,.so,-dll)
二.cmake指定源文件头文件的方式
- include_directories 指定头文件所在目录
- link_directories 指定库文件所在目录
- add_executable()指定源文件所在目录
- target_link_libraries 指定库文件,必须在add_executable()后面设置
三.例子
3.1 目录结构
目录结构3.2 CMake的配置
cmake_minimum_required(VERSION 3.12)
project(learnH C)
set(CMAKE_C_STANDARD 99)
#指定头文件
include_directories(include)
#指定库的目录
link_directories(lib)
file(GLOB srcFile "src/*.c")
file(GLOB libFile "lib/*.c")
#指定c文件
add_executable(learnH ${srcFile} ${libFile})
#指定动态链接库
target_link_libraries(${PROJECT_NAME} Hello)
3.3生成可执行文件
点击运行按钮,会在cmake-build-debug文件夹下生产可执行文件learnH
输入命令./learnH 会报错
dyld: Library not loaded: libHello.so
Referenced from: cmake-build-debug/learnH
Reason: image not found
这是因为动态链接库libHello.so并没有在cmake-build-debug文件夹下,此时需要将libHello.so拷贝进该文件夹下即可
网友评论