CMakeLists.txt:
# ------------------project目录---------------------- #
# |-- bin
# |-- lib
# |-- main.c
# |-- testFunc.c
# |-- testFunc.h
# |-- CMakeLists.txt
# |-- hardware
# | |-- beep.c
# | |-- beep.h
# | |-- server.c
# | |-- server.h
# |-- header1
# | |-- xxx.h
# |-- header2
# | |-- xxx.h
# |-- source1
# | |-- xxx.c
# |-- source2
# | |-- xxx.c
# |-- testLib
# | |-- tlib.a
# ---------------------------------------------------- #
# ------------------cmake内容----------------------- #
# 最低版本要求
cmake_minimum_required(VERSION 2.8)
# 工程名
project(demo)
# 将hardware目录下的所有源文件列表存放到变量HARDWARE_LIST里
# aux_source_directory(./hardware HARDWARE_LIST)
aux_source_directory(./source1 SOURCE1_LIST)
aux_source_directory(./source2 SOURCE2_LIST)
# 将指定的源文件存放到变量HARDWARE_LIST里
set(HARDWARE_LIST
./hardware/beep.c
./hardware/server.c)
# 将目标二进制可执行文件的存放位置,改为工程的根目录下的bin文件夹下
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)
# 添加多个指定头文件的搜索路径
include_directories(header1 header2)
# 添加存放源文件的子目录,或者指定中间二进制和目标二进制的存放位置,src下也需要建立一个CMakeLists.txt
# add_subdirectory(src)
# 将源文件beep.c生成为动态库test_shared
add_library(test_shared SHARED ./hardware/beep.c)
# 设置最终生成的库的名称,还有其他如设置库的版本号等功能
set_target_properties(test_shared PROPERTIES OUTPUT_NAME "testSH")
# 将源文件beep.c生成为静态库test_static
add_library(test_static STATIC ./hardware/beep.c)
# 设置最终生成的库的名称,还有其他如设置库的版本号等功能
set_target_properties(test_static PROPERTIES OUTPUT_NAME "testST")
# 设置库文件的输出路径为lib目录
set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib)
# 在testLib路径下查找库名称为tlib.a的库,并用变量名TEST_LIB表示
find_library(TEST_LIB tlib.a HINTS ${PROJECT_SOURCE_DIR}/testLib)
# 添加编译选项
add_compile_options(-std=c++11 -Wall)
# 将xxx.c生成可执行文件名main
add_executable(main main.c testFunc.c ${HARDWARE_LIST} ${SOURCE1_LIST})
# 将目标文件与库文件进行链接
#target_link_libraries(main ${TEST_LIB})
# ---------------------------------------------------- #
# ------------------cmake指令----------------------- #
# 1、cmake当前下的文件到"CMake"文件夹下,使用"Unix Makefiles"生成Makefile
# cmake . -G "Unix Makefiles" -B "CMake"
# 2、在"CMake"文件夹下,make生成的Makefile
# make -C "CMake"
# 3、运行"CMake"文件夹下的可执行文件main
# ./CMake/main
# 4、清除make生成的文件
# make clean -C "CMake"
# ---------------------------------------------------- #