【问题标题】:CMake configuration CMakeLists.txtCMake 配置 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 感谢您的评论。不是特别。我只是想让它工作:)

标签: c++ makefile cmake


【解决方案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 等外部依赖项。

【讨论】:

    猜你喜欢
    • 2018-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-09
    • 2020-01-28
    • 2020-12-09
    • 2013-09-10
    相关资源
    最近更新 更多