CMake会成为Qt6重点发展的编译手段。
1、先看官方文档
https://doc.qt.io/qt-5/cmake-manual.html
https://doc.qt.io/qt-5/cmake-get-started.html
https://doc.qt.io/qt-5/cmake-command-reference.html
2、再来看一篇文档《How to convert QMake to CMake》
http://www.th-thielemann.de/development/cmake/cmake_qmake_to_cmake.html
Assume you want to convert the following qmake .pro file to cmake:
QT += core
QT -= gui
CONFIG += c++11
TARGET = test
CONFIG += console
CONFIG -= app_bundle
TEMPLATE = app
QT += network
SOURCES += main.cpp \
interface.cpp \
motomanlibrary.cpp \
processing.cpp
SOURCES += main.cpp \
interface.h \
motomanlibrary.h \
processing.h
Copy the content of your qmake .pro into a CMakeLists.txt and start to convert.
QMake: The required libraries.
QT += core
QT -= gui
QT += network
CMake: only add is necessary. The is no default set. Thus the remove of libraries is not necessary.
find_package(Qt5Core REQUIRED)
find_package(Qt5Network REQUIRED)
QMake: Additional Compiler flags:
CONFIG += c++11
CMake: Extend the list of compiler flags as required
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
QMake: The source files
SOURCES += main.cpp \
interface.cpp \
library.cpp \
processing.cpp
CMake: Create a list of source files
set(SOURCES
main.cpp
interface.cpp
library.cpp
processing.cpp
)
QMake: The header to include:
SOURCES += main.cpp \
interface.h \
library.h \
processing.h
CMake: Just show where the header files are. Add header files without am cpp-file to SOURCES.
include_directory(.) # or include_directory(${CMAKE_CURRENT_SOURCE_DIR})
QMake: The target to built:
TARGET = test
CMake: Set the name of the target, add the sources, link the required libs.
add_executable(test ${SOURCES} )
qt5_use_modules(test Core Network) # This macro depends from Qt version
# Should not be necessary
#CONFIG += console
#CONFIG -= app_bundle
#TEMPLATE = app
3、最后来看看我在Qt论坛发的帖子
里面有网友说,qt有提供pro2cmake的转换工具:
https://code.qt.io/cgit/qt/qtbase.git/tree/util/cmake/pro2cmake.py
https://code.qt.io/cgit/qt/qtbase.git/tree/util/cmake/run_pro2cmake.py