set(SRC_LIST main.cpp test.cpp)
add_executable(demo ${SRC_LIST})
set(SRC_LIST main.cpp)
set(SRC_LIST ${SRC_LIST} test.cpp)
add_executable(demo ${SRC_LIST})
set(SRC_LIST main.cpp )
list(append SRC_LIST test.cpp)
list(REMOVE_ITEM SRC_LIST main.cpp)
add_executable(demo ${SRC_LIST})
PROJECT_SOURCE_DIR:工程根目录
PROJECT_BINARY_DIR:运行cmake命令的目录,通常是${PROJECT_SOURCE_DIR}/build
PROJECT_NAME:返回通过project命令定义的项目名称
CMAKE_CURRENT_SOURCE_DIR:当前处理的CMakeLists.txt所在的路径
CMAKE_CURRENT_BINARY_DIR:target 编译目录
CMAKE_CURRENT_LIST_DIR:CMakeLists.txt的完整路径
CMAKE_CURRENT_LIST_LINE:当前所在的行
CMAKE_MODULE_PATH:定义自己cmake模块所在的路径。SET(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake),然后可以用INCLUDE命令来调用自己的模块
EXECUTABLE_OUTPUT_PATH:重新定义目标二进制可执行文件的存放位置
LIBRARY_OUTPUT_PATH:重新定义目标链接库的存放位置
BUILD_SHARED_LIBS:这个开关用来控制默认的库编译方式,如果不进行设置,使用add_library又没有指定库类型的情况下,默认编译生成的库都是静态库。如果set(BUILD_SHARED_LIBS ON)后,默认生成的是动态库。
CMAKE_C_FLAGS:设置C编译选项,也可以通过指令add_definitions()添加
CMAKE_CXX_FLAGS:设置C++编译选项,也可以通过指令add_definitions()添加。
cmake_minimum_required(VERSION 3.4.1)
set(CMAKE_CXX_COMPILER "/usr/bin/g++-4.2")
set(CMAKE_C_COMPILER "gcc-4.2")
add_compile_options(-std=c++11 -Wall -Werror)
set(CMAKE_CXX_FLAGS
-std=c++11
-Wall
-Werror
)
project(demo)
add_executable(demo demo.cpp)
===========生成库===================
add_library(common STATIC util.cpp)
add_library(common SHARED util.cpp)
add_library(demo demo.cpp test.cpp util.cpp)
aux_source_directory(. SRC_LIST)
add_library(demo ${SRC_LIST})
file(GLOB SRC_LIST "*.cpp" "protocol/*.cpp")
add_library(demo ${SRC_LIST})
file(GLOB SRC_LIST ".cpp")
file(GLOB SRC_PROTOCOL_LIST "protocol/*.cpp")
add_library(demo ${SRC_LIST} ${SRC_PROTOCOL_LIST})
aux_source_directory(. SRC_LIST)
aux_source_directory(protocol SRC_PROTOCOL_LIST)
add_library(demo ${SRC_LIST} ${SRC_PROTOICOL_LIST})
========================
find_library(VAR name path)
find_library(
LIBDB_CXX_LIBRARIES NAMES db_cxx
PATHS /usr/lib/ /usr/local/lib/
)
include_directories(
${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_CURRENT_SOURCE_DIR}/include
)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -I${CMAKE_CURRENT_SOURCE_DIR}")
link_directories(
${CMAKE_CURRENT_SOURCE_DIR}/libs
)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -L${CMAKE_CURRENT_SOURCE_DIR)}/libs")
target_link_libraries(
demo
${log-lib}
)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!