天天看點

How to convert QMake to CMake

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

   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.

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:

CMake: Extend the list of compiler flags as required

set(CMAKE_CXX_FLAGS  "${CMAKE_CXX_FLAGS} -std=c++0x")

QMake: The source files

   library.cpp \

CMake: Create a list of source files

set(SOURCES

   main.cpp

   interface.cpp

   library.cpp

)

QMake: The header to include:

   library.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:

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論壇發的文章

https://forum.qt.io/topic/112403/is-there-a-tool-for-converting-qmake-and-cmake-files-to-each-other-one-click-conversion-easy-to-use

裡面有網友說,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

繼續閱讀