前言
编写Qt5可以用本身自带的QtCreator IDE工具,如果不喜欢使用繁琐的图形界面IDE工具的话,也可以使用CMake来编译Qt5,本篇博客就来简单介绍下对应的CMakeLists.txt的写法。
环境
Ubuntu 18.04
Qt5.9.9
CMake 3.10.2
CMakeLists.txt样例
先上整个CMakeLists.txt的样例:
cmake_minimum_required(VERSION 3.5)
project(softscope LANGUAGES CXX)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_PREFIX_PATH /opt/Qt5.9.9/5.9.9/gcc_64)
# set(Qt5Charts_DIR /opt/Qt5.9.9/5.9.9/gcc_64/lib/cmake/Qt5Charts/)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin)
# add Qt5 library
find_package(Qt5 COMPONENTS Widgets REQUIRED)
find_package(Qt5Charts)
set(SOFT_SCOPE_HEADERS
mainwindow.hpp
scopewidget.hpp
)
set(SOFT_SCOPE_SOURCES
main.cpp
mainwindow.cpp
scopewidget.cpp
)
add_executable(softscope
${SOFT_SCOPE_SOURCES}
mainwindow.ui
res.qrc
)
target_link_libraries(softscope PRIVATE Qt5::Widgets Qt5::Charts -pthread)
-
set(CMAKE_PREFIX_PATH /opt/Qt5.9.9/5.9.9/gcc_64):添加软件/库的安装路径前缀,供find_package使用。
-
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON):
uic,rcc和moc都是Qt的工具,uic 主要是编译 .ui文件,rcc 主要是编译资源文件.qrc文件,
moc主要是编译带有Q_OBJECT宏的头文件。全局开启uic,rcc和moc,这里就体现了CMake跨平台,对Qt的兼容性。 -
find_package(Qt5 COMPONENTS Widgets REQUIRED)
find_package(Qt5Charts):
添加Qt的库,用了哪些就添加哪些。 -
add_executable(softscope
${SOFT_SCOPE_SOURCES}
mainwindow.ui
res.qrc):
添加名为softscope的可执行文件,添加Qt的.ui和.qrc文件。 -
target_link_libraries(softscope PRIVATE Qt5::Widgets Qt5::Charts -pthread):
最后进行库的链接,在本例中主要用到了Qt的QWidget和QCharts,其中-pthread是格外的,程序里没有用到的话可以不写。
最后使用make来编译程序: