根据网上的资料,我总结了一下,一个工程应该有根目录(bin)存放可执行文件,头文件目录(include)存放头文件,源码文件(src)存放你的算法,还须要一个库文件夹存放你编译的静态库或者动态库。而后得出下面这个例子:html
/home/bmi-zc/project:
|—CMakeLists.txt 顶层CMakeLists
|
|—bin
|
|—include
| test.h
|
|—lib
|
|—src
| CMakeLists.txt
|
|—main
| CMakeLists.txt
| main.c
|
|—test
CMakeLists.txt
test1.c
test2.c 算法
test.h编辑器
#ifndef INCLUDE_TEST_H #define INCLUDE_TEST_H void t1(); void t2(); #endif /*INCLUDE_TEST_H*/
test1.cui
#include "/home/bmi-zc/project/include/test.h" #include <stdio.h> void t1() { printf("this is t1()\n"); }
test2.cthis
#include "/home/bmi-zc/project/include/test.h" #include <stdio.h> void t2() { printf("this is t2()\n"); }
main.c:.net
#include "/home/bmi-zc/project/include/test.h" int main() { t1(); t2(); return 0; }
/home/bmi-zc/project/CMakeLists.txt:3d
cmake_minimum_required(VERSION 3.5) PROJECT(TEST) ADD_SUBDIRECTORY(src)
CMakeLists.txt内容:指定项目名称,添加工程源码子目录(子目录里面还有目录,只须要把源码根目录添加进去就行,例如上图,只须要添加src目录ADD_SUBDIRECTORY(src)
便可)。
用到的指令:PROJECT,ADD_SUBDIRECTORY。code
/home/bmi-zc/project/src/htm
ADD_SUBDIRECTORY(main) ADD_SUBDIRECTORY(test)
CMakeLists.txt内容:添加源码子目录
所用到指令:ADD_SUBDIRECTORYblog
/home/bmi-zc/project/src/test/
SET(CMAKE_C_COMPTLER GCC) SET(SRC_LIST test1.c test2.c) INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/include) SET(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib) ADD_LIBRARY(libtest STATIC ${SRC_LIST})
CMakeLists.txt内容:设置编辑器,添加头文件路径,设置lib输出目录,生成静态连接库
/home/bmi-zc/project/src/main
SET(SRC_LIST main.c) INCLUDE_DIRECTORIES(${TEST_SOURCE_DIR}/include) SET(EXECUTABLE_OUTPUT_PATH ${TEST_SOURCE_DIR}/bin) ADD_EXECUTABLE(main ${SRC_LIST}) link_directories(${TEST_SOURCE_DIR}/lib) TARGET_LINK_LIBRARIES(main libtest)
CMakeLists.txt内容:整理代码清单,头文件目录,可执行文件输出路径,静态库连接路径,连接静态库。
回到工程根目录,/home/bmi-zc/project
cmake .
make
进入bin文件夹,执行main可执行文件
cd bin
./main