CMakeLists --- 模板(常用指令)

# CMakeList.txt: Demo 


cmake_minimum_required (VERSION 3.8)

set(PROJECT_NAME "demo")
project(${PROJECT_NAME})

#编译选项
option(32MOD "32or64" OFF)

#设置生成程序的位数 不指定时会根据系统的位数生成
if(32MOD)
set(CMAKE_CXX_FLAGS -m32) #生成32位
set(CMAKE_C_FLAGS -m32)
else()
set(CMAKE_CXX_FLAGS -m64) #生成32位
set(CMAKE_C_FLAGS -m64)
endif()

#生成程序的输出目录
set (EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)

#设置环境变量set(ENV{CFLAGS} -O0 -Wall -pthread)
set(CMAKE_C_FLAGS "$ENV{CFLAGS} -O2 -Wall -pthread")
set(CMAKE_CXX_FLAGS "$ENV{CFLAGS} -O2 -Wall -pthread -std=c++11 -std=gnu++11")

#CMAKE_CURRENT_SOURCE_DIR:CMakeLists.txt所在目录的绝对路径
#设置头文件路径 编译时会自动到这些路径下去找头文件
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include)
include_directories(${GEN_DEST}/include)

#源文件路径 GLOB_RECURSE:遍历(包括子文件夹)指定目录下(${CMAKE_CURRENT_SOURCE_DIR}/src/)所有符合条件的文件
file(GLOB_RECURSE srcs_cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/*.c)
file(GLOB_RECURSE happy_cpp ${CMAKE_CURRENT_SOURCE_DIR}/happy/*.cpp ${CMAKE_CURRENT_SOURCE_DIR}/happy/*.c)
set(ALL_COMPILE_SRC
${srcs_cpp}
${happy_cpp}
)

#打印
foreach(source ${ALL_COMPILE_SRC})
message("src: ${source}")
endforeach()


#指定链接时,库文件的搜索路径
set(JSONCPP ${CMAKE_CURRENT_SOURCE_DIR}/jsoncpp)
set(GTEST ${CMAKE_CURRENT_SOURCE_DIR}/gtest)
link_directories(${JSONCPP}/lib)
link_directories(${GTEST}/lib)

# 将源代码添加到此项目的可执行文件
add_executable (${PROJECT_NAME} "test/client.cpp" ${ALL_COMPILE_SRC})
#生成库
#add_library(demo STATIC ${ALL_COMPILE_SRC})
#add_library(demo SHARED ${ALL_COMPILE_SRC})

#指定需要链接的库的名字
set(ALL_LIB
${JSONCPP}/json.so
${GTEST}/gtest.so
)
target_link_libraries(${PROJECT_NAME} ${ALL_LIB})
target_link_libraries(client -lddsc -lpthread)
target_link_libraries(server -lddsc -lpthread)

posted on 2022-08-21 16:13  林西索  阅读(397)  评论(0编辑  收藏  举报