CMakeLists.txt入門使用
阿新 • 來源:網路 • 發佈:2021-04-24
建立四個檔案: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
