CMakeLists.txt入门使用

创建四个文件:a.h、a.c、main.c、CMakeLists.txt

a.h

#ifndef A_FILE
#define A_FILE

#include <math.h>

double get_val(double val);
#endif

a.c

#include "a.h"

double get_val(double val)
{
    return sqrt(val);
}

main.c

#include <stdio.h>
#include "a.h"

#define WIDTH_COLOR
#ifdef WIDTH_COLOR
    #define COLOR_DEBUG   "\e[0;32m"
    #define COLOR_INFO    "\e[0;38m"
    #define COLOR_WARNING "\e[01;35m"
    #define COLOR_ERROR   "\e[01;31m"
    #define COLOR_END "\e[0m"

    #define DEBUG_LOG(str,...) \
        fprintf(stdout, COLOR_DEBUG "DEBUG: " str COLOR_END, ##__VA_ARGS__);

    #define INFO_LOG(str, ...) \
        fprintf(stdout, COLOR_INFO str COLOR_END, ##__VA_ARGS__);

    #define WARNING_LOG(str, ...) \
        fprintf(stderr, COLOR_WARNING "WARNING: " str COLOR_END, ##__VA_ARGS__);

    #define ERROR_LOG(str, ...) \
        fprintf(stderr, COLOR_ERROR "ERROR: " str COLOR_END, ##__VA_ARGS__);
#else
    #define DEBUG_LOG(...) \
        fprintf(stdout, "DEBUG: " __VA_ARGS__);

    #define INFO_LOG(...) \
        fprintf(stdout, __VA_ARGS__);

    #define WARNING_LOG(...) \
        fprintf(stderr, "WARNING: " __VA_ARGS__);

    #define ERROR_LOG(...) \
        fprintf(stderr, "ERROR: " __VA_ARGS__);
#endif

int main()
{
    DEBUG_LOG("%s\n","debug log")
    INFO_LOG("%s\n","info log")
    WARNING_LOG("%s\n","warning_log")
    ERROR_LOG("%s\n","error_log")

    #ifdef USE_DEFINE
        INFO_LOG("%f\n",get_val(4.0))
    #else
        INFO_LOG("No define USE_DEFINE")
    #endif

    return 0;
}

CMakeLists.txt

#项目名称
PROJECT(test)

#把当前路径添加到include里面
include_directories(.)

#在当前目录下找到所有*.c源文件 这里是找到a.c文件
AUX_SOURCE_DIRECTORY(. DIR_SRCS)

#找到的源文件列表设置给TEST_PATH变量
SET(TEST_PATH ${DIR_SRCS})

#添加USE_DEFINE预定义宏
add_definitions(-DUSE_DEFINE)

#创建可执行程序 这里起名叫A
ADD_EXECUTABLE(A ${TEST_PATH})

#添加可执行程序test的库依赖 (m:libm.so)
target_link_libraries(A m)

创建生成过程

第一步:创建build目录,为了使生成的文件都能够在build目录里面而不影响我们当前的文件结构

mkdir build

第二步:进入build目录

cd build

第三步:生成MakeFile,".."告诉cmake,CMakeLists.txt在上级目录里

cmake ..

第四步:生成执行程序

make

(或者这四个命令合起来一气呵成:mkdir build && cd build && cmake .. && make)

程序运行结果:

这些带颜色的日志就要归功于上面的那几个宏定义,结果输出2.0显然我们预定义的USE_DEFINE起作用了。

 

更多关于CMakeLists.txt参考传送门:https://blog.csdn.net/afei__/article/details/81201039

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值