使⽤cmake编译可执⾏⽂件
如我们写好源代码和主函数,可以不使⽤ IDE 直接⽤命令⾏编译成可执⾏⽂件。⽐如需要提供⼀个⼯具程序提供给后端通过命令⾏调⽤。可能有的⼈认为直接编译成可执⾏⽂件给别⼈不就 OK 了吗?
但问题来了,你本地编译的平台和架构可能和别⼈的不⼀样,直接给别⼈编译好的可执⾏⽂件可能跑不起来,举个栗⼦,我本地是 Mac 电脑,我编译好的执⾏⽂件在 Mac 电脑上跑没问题,但服务端同学是 Linux 的就跑不起来。
所以我们写好编译脚本把源码给他们,他们基于⾃⼰的平台编译就 OK 了。
⽐如,源码结构如下:
├── source
│├──
│├── README.md
│├── main.cpp
cmake如何使用
│└── utils
│├── STAudioUtils.cpp
│├── STAudioUtils.h
│├── WaveFile.cpp
│└── WaveFile.h
编译脚本,CMakeLists 如下:
# 指定 cmake 版本,跟安装的版本保持⼀致
cmake_minimum_required(VERSION 3.4.1)
# 指定 c++ 标准
set(CMAKE_CXX_STANDARD 11)
# 输出编译信息
message("Hello Alan Start compile!")
# 设置源码根路径,即 cpp ⽬录
set(SRC_ROOT_PATH ${CMAKE_CURRENT_SOURCE_DIR})
message(${SRC_ROOT_PATH})
# 定义要编译的⽂件列表变量
file(GLOB CPP_FILES_IN_UTILS "${SRC_ROOT_PATH}/utils/*.cpp")
# 设置要编译的源⽂件
set(
SOURCE_FILES
${CPP_FILES_IN_UTILS}
${SRC_ROOT_PATH}/main.cpp
)
# include 头⽂件⽬录
include_directories(${SRC_ROOT_PATH}/)
# 编译成可执⾏⽂件,如果编译动态库可以⽤:target_link_libraries
add_executable(audio_tool ${SOURCE_FILES})
编译步骤:
cd source ( 所在⽬录)
cmake .
make
执⾏:cmake .
再执⾏:make
编译出最终的可执⾏⽂件:audio_tool(在 CMakeLists 的 add_executable 指定的)
使⽤时根据⾃⼰的 main 函数⽤就可以,⽐如要带⼀个参数,执⾏如下:
./audio_tool ../test/test.wav

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。