在之前的项目中我使用了 .pro 文件来配置 qmake,但现在我希望将其转换为 CMakeLists.txt 文件。以下是具体的步骤和转换方法。
qmake 配置示例
QT += core
QT -= gui
CONFIG += c++11
TARGET = test
CONFIG += console
CONFIG -= app_bundle
TEMPLATE = app
QT += network
SOURCES += main.cpp \test_interface.cpp \motomanlibrary.cpp \processing.cpp
HEADERS += test_interface.h \motomanlibrary.h \processing.h
对应的 CMake 配置
-  添加所需的库 find_package(Qt5Core REQUIRED) find_package(Qt5Network REQUIRED)在 CMake 中,仅需要添加库,不需要像 qmake 那样显式排除(如 QT -= gui)。
-  设置编译器标志 set(CMAKE_CXX_STANDARD 11)qmake 中的 CONFIG += c++11在 CMake 中通过设置CMAKE_CXX_STANDARD来实现。
-  设置源文件 set(SOURCESmain.cpptest_interface.cppmotomanlibrary.cppprocessing.cpp )
-  设置头文件 include_directories(${CMAKE_CURRENT_SOURCE_DIR})
-  设置目标文件 add_executable(test ${SOURCES}) target_link_libraries(test Qt5::Core Qt5::Network)
简要示例
以下是一个综合的 CMakeLists.txt 文件,结合了上述的所有步骤:
cmake_minimum_required(VERSION 3.1)project(test_project)# 设置编译器标准
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)# 寻找所需的 Qt 库
find_package(Qt5 REQUIRED COMPONENTS Core Network)# 设置源文件和头文件目录
set(SOURCESmain.cpptest_interface.cppmotomanlibrary.cppprocessing.cpp
)
include_directories(${CMAKE_CURRENT_SOURCE_DIR})# 定义可执行文件
add_executable(test ${SOURCES})# 链接 Qt 库
target_link_libraries(test Qt5::Core Qt5::Network)
可选工具
除了手动转换,还有一些工具可以帮助你自动化这一过程,例如 Qt 官方的 pro2cmake.py,它可能会在未来的 Qt 版本中与 CMake 一起成为主流构建系统的一部分。
参考链接
- Qt 官方 CMake 入门教程
- CMake 命令参考
以上内容为如何将 qmake 转换为 cmake 的基础介绍,希望对你有所帮助。