AndreaDO

导航

Linux上CMAKE的使用

Linux上CMAKE的使用

简单使用

格式如下:

cmake_minimum_required(VERSION 3.0) # 最低版本3.0
project(main) # 项目名称
# 配置编译器
set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -g)

# 配置头文件搜索路径
# include_directories()
# 配置库文件搜索路径
# link_directories()
# 设置需要编译的源文件列表
set(SRC_LIST main.cpp)

# 把.指定路径下的所有源文件名字放入变量名SRC_LIST里面
# aux_source_directory(. SRC_LIST)

# 表示生成可执行文件server ,由SRC_LIST变量所定义的源文件编译而来
add_executable(server ${SRC_LIST})

# 表示server这个目标文件,需要链接muduo_net muduo_base pthread这三个库文件
target_link_libraries(server muduo_net muduo_base pthread)

# 先执行cmake . 在执行make


编写完后在终端中先执行cmake .命令

image

ls查看出现了哪些新文件

ChatClient.h  ChatServer.h  CMakeCache.txt  CMakeFiles  cmake_install.cmake  CMakeLists.txt  m  main.cpp  Makefile

继续执行make命令

image

这个时候server执行文件就编译完成了,可以使用。

进一步规范化目录结构

上面的一系列文件全部都在一个文件夹里面,太杂乱了,我们建立多个目录来规范

文件目录作用

bin目录:存放可执行文件,这些文件可以直接运行,例如 ls、cd、mkdir 等命令。

lib目录:存放库文件,这些文件包含了程序运行所需的一些函数和代码,程序在运行时可以调用这些库文件。

include目录:存放头文件,头文件包含了程序开发所需的一些宏定义、数据结构和函数声明等信息,程序在开发时可以包含这些头文件。

src目录:存放源代码文件,这些文件包含了程序的源代码,程序员可以编辑这些文件来修改程序的功能。

build目录:存放编译生成的文件,例如目标文件、可执行文件等,这些文件是编译过程中的中间产物,通常不需要手动修改。

example目录:存放示例代码,通常用于演示如何使用某个软件包或库。

thirdparty目录:存放第三方库文件,这些库文件不是由系统或软件包提供的,而是由第三方开发人员提供的。

具体步骤

先创建一个build目录,进入该目录中,执行cmake ..命令后,编译文件后存放在build目录中了

image

再创建一个bin目录,负责存放可执行文件,同时在cmake文件中添加这行命令

# 设置可执行文件的存放目录
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)

image

重新执行一遍cmake .. 和make
image
此刻bin目录下已经有可执行文件
image

主目录下的CMAKE

查看当前我们的文件目录,我们也可以在主目录中编写CMAKE

主目录cmake

cmake_minimum_required(VERSION 3.0)
project(main)

#配置编译选项
set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -g)

#指定搜索的子目录
add_subdirectory(muduo_test)

# 设置可执行文件的存放目录
# set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)

子目录cmake

# 配置头文件搜索路径
# include_directories()
# 配置库文件搜索路径
# link_directories()
# 设置需要编译的源文件列表
set(SRC_LIST ./main.cpp)

# 设置可执行文件的存放目录
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)

# 把.指定路径下的所有源文件名字放入变量名SRC_LIST里面
# aux_source_directory(. SRC_LIST)

# 表示生成可执行文件server ,由SRC_LIST变量所定义的源文件编译而来
add_executable(server ${SRC_LIST})

# 表示server这个目标文件,需要链接muduo_net muduo_base pthread这三个库文件
target_link_libraries(server muduo_net muduo_base pthread)

此时我们的目录结构如下,我们右键选择生成所有项目,即可达到和之前一样的效果

image

生成成功后,主目录下bin目录下已经有了可执行文件

image

posted on 2024-04-04 23:11  AndreaDO  阅读(549)  评论(0)    收藏  举报