Skip to content

CmakeList.txt ​

变量 ​

在CMake中,CMakeLists.txt文件通常用于定义项目的构建规则和设置。这个文件中可以声明和使用各种变量来管理项目的编译和构建过程。以下是一些常见的CMakeList文件中可能会使用的变量:

  1. CMAKE_SOURCE_DIR:指向源代码根目录的路径。
  2. CMAKE_BINARY_DIR:指向构建目录的路径。
  3. CMAKE_CURRENT_SOURCE_DIR:指向当前处理的CMakeLists.txt所在的目录。
  4. CMAKE_CURRENT_BINARY_DIR:指向与当前处理的CMakeLists.txt对应的构建目录。
  5. CMAKE_CURRENT_LIST_FILE:当前处理的CMakeLists.txt的完整路径。
  6. CMAKE_CURRENT_LIST_DIR:当前处理的CMakeLists.txt所在的目录的完整路径。
  7. PROJECT_NAME:用于设置项目的名称。
  8. PROJECT_SOURCE_DIR:指向项目源代码根目录的路径。

这些变量是CMake内置的,可以在CMakeLists.txt文件中直接引用,例如:

cmake
message("Source directory: ${CMAKE_SOURCE_DIR}")
message("Build directory: ${CMAKE_BINARY_DIR}")
message("Current source directory: ${CMAKE_CURRENT_SOURCE_DIR}")
message("Current build directory: ${CMAKE_CURRENT_BINARY_DIR}")
message("Current list file: ${CMAKE_CURRENT_LIST_FILE}")
message("Current list directory: ${CMAKE_CURRENT_LIST_DIR}")
message("Project name: ${PROJECT_NAME}")
message("Project source directory: ${PROJECT_SOURCE_DIR}")

这些变量可以用于打印路径、设置目录、配置输出等等。请注意,这只是一些常见的变量,并不是所有可能用到的变量。实际上,您可以在CMakeLists.txt文件中定义自己的变量来满足特定需求。

常用宏 ​

  1. project 这个宏用于设置项目的名称和版本。它可以接收两个参数,第一个参数是项目的名称,第二个参数是项目的版本号。
  2. add_executable 这个宏用于将源代码文件编译成可执行文件。它接收两个参数,第一个参数是生成的可执行文件的名称,第二个参数是源代码文件的路径。
  3. add_library 这个宏用于将源代码文件编译成静态库或共享库。它接收两个参数,第一个参数是生成的库文件的名称,第二个参数是源代码文件的路径。
  4. target_link_libraries 这个宏用于将库文件链接到可执行文件中。它接收两个参数,第一个参数是可执行文件的名称,第二个参数是需要链接的库文件的名称。
  5. include_directories 这个宏用于添加头文件搜索路径。它接收一个参数,参数是头文件搜索路径的路径。
  6. find_package 这个宏用于查找指定的外部库。它接收一个参数,参数是要查找的外部库的名称。
  7. set 这个宏用于设置变量的值。它接收两个参数,第一个参数是变量的名称,第二个参数是变量的值。
  8. add_definitions 这个宏用于添加编译选项。它接收一个参数,参数是要添加的编译选项。
  9. if指令:这个指令用于基于条件执行一系列命令。可以使用if命令根据不同的情况设置编译选项或条件编译的开关。
  10. foreach指令:这个指令用于遍历一个列表,并执行相应的命令。
  11. add_executable或add_library指令:这些指令用于添加可执行文件或库文件到项目中。
  12. target_include_directories指令:这个指令用于指定编译目标的头文件搜索路径。
  13. cmake_minimum_required指令:这个指令用于指定所需的CMake的版本。

示例 ​

cmake
cmake_minimum_required(VERSION 3.5)

project(loginPage LANGUAGES CXX)

set(CMAKE_INCLUDE_CURRENT_DIR ON)

set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)

set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

# QtCreator supports the following variables for Android, which are identical to qmake Android variables.
# Check http://doc.qt.io/qt-5/deployment-android.html for more information.
# They need to be set before the find_package(Qt5 ...) call.

#if(ANDROID)
#    set(ANDROID_PACKAGE_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/android")
#    if (ANDROID_ABI STREQUAL "armeabi-v7a")
#        set(ANDROID_EXTRA_LIBS
#            ${CMAKE_CURRENT_SOURCE_DIR}/path/to/libcrypto.so
#            ${CMAKE_CURRENT_SOURCE_DIR}/path/to/libssl.so)
#    endif()
#endif()

find_package(Qt5 COMPONENTS Widgets REQUIRED)

if(ANDROID)
  add_library(loginPage SHARED
    main.cpp
    mainwindow.cpp
    mainwindow.h
    mainwindow.ui
  )
else()
  add_executable(loginPage
    main.cpp
    mainwindow.cpp
    mainwindow.h
    mainwindow.ui
  )
endif()

target_link_libraries(loginPage PRIVATE Qt5::Widgets)

导入静态库 ​

导入时候有.a文件和.h文件

您好!有关cmake导入静态库的问题,以下是详细的回答:

  1. 首先,在CMakeLists.txt文件中,添加以下几行代码:
cmake
# 设置项目名称
project(YourProjectName)

# 设置编译器
set(CMAKE_CXX_STANDARD 11)

# 添加可执行文件
add_executable(YourExecutable your_source_files.cpp)

# 添加库文件搜索路径 .a文件
link_directories(${CMAKE_SOURCE_DIR}/libs)
# 添加头文件搜索路径 .h文件
include_directories(${CMAKE_SOURCE_DIR}/libs/include)

# 添加需要链接的静态库
target_link_libraries(YourExecutable YourLibraryName)
  1. 确保您的.a文件和.h文件位于正确的目录中。一般来说,您可以将.a文件放入一个名为lib的文件夹中,将.h文件放入一个名为include的文件夹中。

  2. 修改上述代码中的"YourProjectName"为您的项目名称,"YourExecutable"为您的可执行文件名称,"your_source_files.cpp"为您的源代码文件名,"YourLibraryName"为您要链接的静态库名称。

  3. 确保您的CMakeLists.txt文件和源代码文件位于同一目录下。

  4. 打开终端,进入您的项目目录,执行以下命令编译项目:

shell
mkdir build
cd build
cmake ..
make
  1. 如果一切顺利,编译过程应该成功,并生成可执行文件。您可以在build文件夹中找到生成的可执行文件。

学 习 记 录