这一篇主要关注怎么加入头文件,生成静态库,调用静态库
文件树
.
├── build
├── CMakeLists.txt
├── main.c
├── include
│ ├── add.h
│ └── hello.h
└── src
├── add.c
├── hello.c
├── CMakeLists.txt
./CMakeLists.txt
CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
PROJECT(HELLO)
# include, src
INCLUDE_DIRECTORIES("${PROJECT_SOURCE_DIR}/include")
ADD_SUBDIRECTORY("${PROJECT_SOURCE_DIR}/src")
# main -> bin/.exe
SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)
ADD_EXECUTABLE(hello main.c)
# add lib/.a
LINK_DIRECTORIES("${PROJECT_SOURCE_DIR}/lib")
TARGET_LINK_LIBRARIES(hello hellolib)
./src/CMakeLists.txt
CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
# generate lib
SET(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib)
ADD_LIBRARY( hellolib STATIC hello.c add.c)
./main.c
#include"hello.h"
#include"add.h"
void main(){
helloFun();
addFun(2,3);
}
./include/add.h
#ifndef ADD_H
#define ADD_H
#include<stdio.h>
void addFun(int x, int y);
#endif
./include/hello.h
#ifndef HELLO_H
#define HELLO_H
#include<stdio.h>
void helloFun();
#endif
./src/add.c
#include "add.h"
void addFun(int x, int y){
printf("%d + %d = %d \n",x,y,x+y);
}
./src/hello.c
#include "hello.h"
void helloFun(){
printf("hello world\n");
}
执行命令
cd build
cmake ..
make
cd ../bin
./hello
输出结果为
hello world
2 + 3 = 5