在之前的项目中我使用了 .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 的基础介绍,希望对你有所帮助。