CMake 配置 CMakeLists.txt

Posted

技术标签:

【中文标题】CMake 配置 CMakeLists.txt【英文标题】:CMake configuration CMakeLists.txt 【发布时间】:2021-05-07 18:39:09 【问题描述】:

我想为一个项目设置 cmake,但我不知道如何处理这个架构:

src/
  control/
    file.cpp
    file.h
  factory/
    file.cpp
    file.h
  model/
    file1.cpp
    file1.h
    ...
    file9.cpp
    file9.h
  ui/
    file.cpp
    file.h
  main.cpp

我想对于有使用 cmake 经验的人来说似乎很容易。我不知道在不同的 CMakeLists.txt 上写什么来链接包。感谢您的帮助。

【问题讨论】:

你的结构看起来不错。如果涉及到库,我通常会在每个文件夹中放置一个 CMakeLists.txt,以便每个 CMakeLists.txt 处理自己的文件夹。 您想将每个文件夹作为一个单独的项目处理吗?没有必要,所以最后你只会有一个 CMakeLists.txt。 @drescherjm 感谢您的评论。当一个文件夹中有多个库(例如模型中)时如何编写CMakeLists.txt? 没有什么能阻止您在 CMakeLists.txt 中拥有超过 1 个 add_library()。正如我上面所说,我不会那样做,但这是个人喜好。没有正确或错误的方法。 @Attis 感谢您的评论。不是特别。我只是想让它工作:) 【参考方案1】:

我会按照这些思路使用一些东西:

cmake_minimum_required(VERSION 3.12)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

project(test1)

find_package(OpenSSL REQUIRED)
find_package(Qt5 COMPONENTS Core REQUIRED)

add_executable($PROJECT_NAME main.cpp 
                    src/control/file.h 
                    src/control/file.cpp
                    src/factory/file.h 
                    src/factory/file.cpp
                    # ...
                    )

target_link_libraries($PROJECT_NAME OpenSSL::SSL Qt5::Core)

此 CMakeLists.txt 假定您至少拥有 CMake 版本 3.12。该示例还向您展示了如何获取 OpenSsl 和 Qt 等外部依赖项。

【讨论】:

以上是关于CMake 配置 CMakeLists.txt的主要内容,如果未能解决你的问题,请参考以下文章

cmake 查看配置选项

CMake错误配置opencv

cmake 是不是使用约定而不是配置?

Window10 CMake 配置OpenCV源码

Window10 CMake 配置OpenCV源码

cmake 在安装mysql5.5时为啥在一些配置项前加大写字母D?