cmake入门step2 (多文件项目)

这一篇主要关注怎么加入头文件,生成静态库,调用静态库

文件树

.
├── 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 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值