1. 程式人生 >實用技巧 >其它 >CMakeLists.txt入門使用

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)

程式執行結果:

CMakeLists.txt入門使用

這些帶顏色的日誌就要歸功於上面的那幾個巨集定義,結果輸出2.0顯然我們預定義的USE_DEFINE起作用了。

更多關於CMakeLists.txt參考傳送門:https://blog.csdn.net/afei__/article/details/81201039