CMake 教程

使用系统环境变量

$ENV{PATH}

指定项目名称

相当于VS中的解决方案名称。

project(sqlitebrowser)

指定最低支持的CMake版本

cmake_minimum_required(VERSION 2.8.7)

设置变量

set(QSCINTILLA_DIR libs/qscintilla/Qt4Qt5)

set(SQLB_HDR
    src/version.h
    src/sqlitetypes.h
    src/csvparser.h
    src/sqlite.h
    src/grammar/sqlite3TokenTypes.hpp
    src/grammar/Sqlite3Lexer.hpp
    src/grammar/Sqlite3Parser.hpp
)

使用变量

${SQLB_HDR}

添加一个可执行程序项目

${PROJECT_NAME}指project指令中设置的名称。

add_executable(${PROJECT_NAME}
    ${SQLB_HDR}
    ${SQLB_SRC}
    ${SQLB_FORM_HDR}
    ${SQLB_MOC}
    ${SQLB_RESOURCES_RCC}
    ${SQLB_MISC}
)

添加预处理器定义

add_definitions(-DENABLE_SQLCIPHER)
add_definitions(-std=c++11)

if语句

if(NOT CMAKE_BUILD_TYPE)
    set(CMAKE_BUILD_TYPE "Release")
endif()

添加GUI工具选项

OPTION(ENABLE_TESTING "Enable the unit tests" OFF)
OPTION(FORCE_INTERNAL_ANTLR "Don't use the distribution's Antlr library even if there is one" OFF)
OPTION(FORCE_INTERNAL_QSCINTILLA "Don't use the distribution's QScintilla library even if there is one" OFF)

添加头文件包含目录

include_directories(
    "${CMAKE_CURRENT_BINARY_DIR}"
    ${QHEXEDIT_DIR}
    ${QCUSTOMPLOT_DIR}
    ${ADDITIONAL_INCLUDE_PATHS}
    src
)

添加链接库目录

link_directories("${CMAKE_CURRENT_BINARY_DIR}/${ANTLR_DIR}")

添加链接库

target_link_libraries(${PROJECT_NAME} antlr)

设置输出目录

set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/Lib)  # 静态库
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/Lib)  # 动态库
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/Bin)  # 可执行程序