一个MakeLists.txt模板

本文详细介绍了如何使用CMake配置一个基于Qt5的项目,包括设置CMake版本、项目信息、C++标准、自动处理Qt文件以及添加源文件、头文件、UI文件和资源文件。同时,讲解了如何将生成的中间文件加入到编译路径,并最终生成可执行文件及链接Qt5的Widgets库。
#cmake版本
cmake_minimum_required(VERSION 3.1)

#项目名称
project(PluginExplore VERSION 1.0.0 LANGUAGES CXX)

#采用C++11标准
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

#使能AutoMoc, autoUIC, autoRCC
SET(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)

#添加源文件路径
if(CMAKE_VERSION VERSION_LESS "3.7.0")
    set(CMAKE_INCLUDE_CURRENT_DIR ON)
endif()

#让cmake自动去寻找Qt5
FIND_PACKAGE(Qt5 COMPONENTS Widgets REQUIRED)

#添加所有的源文件
SET(PluginExplore_SOURCES
        main.cpp
        mainWindow.cpp
)

#添加所有的头文件
SET(PluginExplore_HEADERS
        mainWindow.h
)

#添加所有的.ui文件
SET(PluginExplore_FORMS
        mainWindow.ui
)

#添加资源文件
SET(PluginExplore_RESOURCES
        pluginExplore.qrc
)

##调用预编译器moc,需要使用 QT5_WRAP_CPP宏
#QT5_WRAP_CPP(PluginExplore_HEADERS_MOC ${PluginExplore_HEADERS})
##使用uic处理.ui文件
#QT5_WRAP_UI(PluginExplorer_FORMS_HEADERS ${PluginExplore_FORMS})
##使用rcc处理.qrc文件
#QT5_ADD_RESOURCES(PluginExplore_RESOURCES_RCC ${PluginExplore_RESOURCES})

#这些生成的中间文件都会在build目录下,这样的话,编译器则不能定位由uic程序产生的诸如_ui_mainwindow.h等文件。所以,我们需要把build目录添加到包含目录中
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR})

#生成可执行文件
ADD_EXECUTABLE(PluginExplore
        ${PluginExplore_SOURCES}
        ${PluginExplore_HEADERS_MOC}
    ${PluginExplore_FORMS_HEADERS}
        ${PluginExplore_RESOURCES_RCC}
)

#为target添加需要链接的共享库
TARGET_LINK_LIBRARIES(PluginExplore Qt5::Widgets)


CLion 是 JetBrains 公司开发的一款集成开发环境(IDE),主要用于 C 和 C++ 开发。`Makefile`, 或者称为 `MakeLists.txt`,是 C/C++ 项目中常用的构建脚本,用于管理编译过程,包括编译、链接和清理等操作。当你在 CLion 中打开一个支持 Makefile 的项目时,通常会在根目录下看到这个文件。 `MakeLists.txt` 中的编译和链接指令主要包括以下几个部分: 1. **目标**(Target): 比如 `all`、`debug`、`release` 等,是你要编译的目标。你可以通过点击 IDE 菜单或运行快捷键来选择不同的目标。 2. **规则**(Rules): 使用 `$(CXX)`(C++ 编译器)、`$(OBJECTS)`(源文件编译后的对象文件列表)等变量,定义了如何从源文件生成目标文件。例如: ``` target: $(OBJECTS) $(CXX) -o $@ $(LDFLAGS) $(OBJECTS) ``` 这里 `$(CXX)` 编译源文件,`$@` 表示当前目标,`$(LDFLAGS)` 是链接选项,`$(OBJECTS)` 列出所有需要链接的对象文件。 3. **依赖**(Dependencies): 通过 `$(DEPS)` 来指定源文件之间的依赖关系,如果一个源文件依赖于另一个,则应包含在依赖列表中,保证先编译依赖项。 4. **规则集**(Rule Sets): 分别定义了编译、预处理、链接等不同的步骤。 5. **宏**(Macros): 如 `CFLAGS`、`CXXFLAGS` 等,用于设置编译时的特定选项。 在 CLion 中,你可以直接通过工具栏的 "构建" 功能或者菜单项 "Run" > "Edit Configurations" 来配置 Makefile 任务,并查看或编辑 `MakeLists.txt` 文件的内容。如果你想要手动编译,可以在终端中切换到项目目录并运行 `make [target]` 命令。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值