cmake
第一种:在项目目录写一个CMakeLists.txt
cmake_minimum_required (VERSION 3.8)
project ("rtsp")
该命令会查找指定目录下的所有源文件,然后将结果存进指定变量名。
#aux_source_directory(<dir> <variable>
aux_source_directory(src/xop/ XOP_SRCS)
aux_source_directory(src/net/ NET_SRCS) #遍历文件夹下的所有文件
# 将源代码添加到此项目的可执行文件。
link_libraries(-lrt -pthread -lpthread -ldl -lm -std=c++11) #链接系统库
add_executable (rtsp ${XOP_SRCS} ${NET_SRCS} "src/3rdpart/md5/md5.hpp" "rtsp_h264_file.cpp")
https://github.com/MoonXu0722/cmake_one.git
---------------------------------------------------------------------------------------------------------------------------------------------
第二种:在每个子目录创建CMakeLists.txt生成库供项目目录调用
项目目录:
cmake_minimum_required (VERSION 3.8)
project ("demo")
add_subdirectory(math)#添加子文件夹
# 将源代码添加到此项目的可执行文件。
add_executable(demo main.cpp)
target_link_libraries(demo add)#add为子目录生成的库名字
子目录:
aux_source_directory(. SRCS_DIR)
add_library(add ${SRCS_DIR})#add为子目录生成的库名字
https://github.com/MoonXu0722/cmake_two.git
------------------------------------------------------------------------------------------------------------------------------------------------
https://github.com/MoonXu0722/share.git
编译动态库
cmake_minimum_required(VERSION 3.16.0)
project(hello)
include_directories(include)
file(GLOB SOURCES "src/*.cpp")
add_library(add SHARED ${SOURCES})
install(TARGETS add DESTINATION shared)#这一步没有成功
------------------------------------------------------------------------------------------------------------------
编译静态库
cmake_minimum_required(VERSION 3.16.0)
project(hello)
set(CMAKE_BUILD_TYPE Release)
include_directories(include)
file(GLOB SOURCES "src/*.cpp")
add_library(add STATIC ${SOURCES})
install(TARGETS add DESTINATION static)#这一步没有成功
-----------------------------------------------------------------
使用动态库
cmake_minimum_required(VERSION 3.16.0)
project(hello)
set(CMAKE_BUILD_TYPE Release)
include_directories(include)
file(GLOB SOURCES "src/*.cpp")
set(PROJECT_LINK_LIBS libadd.so)
link_directories(BUILD)
add_executable(hello src/hello.cpp)
target_link_libraries(hello ${PROJECT_LINK_LIBS})
----------------------------------------------------------
使用静态库
cmake_minimum_required(VERSION 3.16.0)
project(hello)
set(CMAKE_BUILD_TYPE Release)
include_directories(include)
file(GLOB SOURCES "src/*.cpp")
set(PROJECT_LINK_LIBS libadd.a)
link_directories(BUILD)
add_executable(hello src/hello.cpp)
target_link_libraries(hello ${PROJECT_LINK_LIBS})
-------------------------------------------------------------------------------------
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本