https://doc.qt.io/qt-5/cmake-get-started.html
For find_package to be successful, CMake must find the Qt installation in one of the following ways:
Set your CMAKE_PREFIX_PATH environment variable to the Qt 5 installation prefix. This is the recommended way.
Sample:
# cmake version
cmake_minimum_required(VERSION 3.1.0)
# project name
project(helloworld VERSION 1.0.0 LANGUAGES CXX)
# C++
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
# set path for Find_***
set(CMAKE_MODULE_PATH "3rdParty")
# Qt auto on
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)
if(CMAKE_VERSION VERSION_LESS "3.7.0")
set(CMAKE_INCLUDE_CURRENT_DIR ON)
endif()
# Add sub folder
add_subdirectory(Math)
# Find Qt
find_package(Qt5 COMPONENTS Widgets REQUIRED)
# set path for Find_***
set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/3rdParty)
# Find 3rdparty
find_package(Quazip)
find_package(MyZlib)
# Create executable
add_executable(helloworld
QtCMake.cpp
QtCMake.h
main.cpp
QtCMake.qrc
)
# link to Widgets
# link to MathLib
target_link_libraries(helloworld Qt5::Widgets)
# MathLib is defined in sub folder Math
target_link_libraries(helloworld MathLib)
# include & link to Quazip
if (Quazip_FOUND)
include_directories(${Quazip_INCLUDE_DIR})
target_link_libraries(helloworld ${Quazip_LIBRARY})
endif(Quazip_FOUND)
# include & link to Zlib
if (MyZlib_FOUND)
include_directories(${MyZlib_INCLUDE_DIR})
target_link_libraries(helloworld ${MyZlib_LIBRARY})
endif(MyZlib_FOUND)
CMakeList.txt for Math folder: aux_source_directory(. DIR_MATHLIB_SRCS)
add_library (MathLib ${DIR_MATHLIB_SRCS})
FindMyZlib.cmake: # 辅助输出信息 message(“now using FindMyZlib.cmake find MyZlib lib”)
# 用 CMAKE_CURRENT_LIST_DIR 表示当前 Find****.cmake 文件所在的路径
set(MyZlib_INCLUDE_DIR "${CMAKE_CURRENT_LIST_DIR}/zlib-1.2.11/include/")
message("./h dir ${MyZlib_INCLUDE_DIR}")
file(GLOB LIB_FILES "${CMAKE_CURRENT_LIST_DIR}/zlib-1.2.11/lib/x64/Release/*")
set (MyZlib_LIBRARY ${LIB_FILES})
message("lib dir: ${MyZlib_LIBRARY}")
if(MyZlib_INCLUDE_DIR AND MyZlib_LIBRARY)
# 设置变量结果
set(MyZlib_FOUND TRUE)
endif(MyZlib_INCLUDE_DIR AND MyZlib_LIBRARY)