【发布时间】:2023-04-01 13:38:01
【问题描述】:
我在使用具有多个可执行文件的 CMake 组织我的项目时遇到了问题。我有以下结构:
CmakeLists.txt
main.cpp
somelib.cpp
somelib.h
dir1
main.cpp
file1.h
file1.cpp
...
dir2
main.cpp
lib1.h
lib2.cpp
...
一般来说,我希望能够在 Clion 中选择可执行文件并独立运行任何项目,包括依赖于其他两个项目的外部项目。在外部main.cpp 中,我包含来自 dir1 和 dir2 的标题。 dir1、dir2 项目本身依赖于不同的库,如Boost、Eigen、Qt 等。使这种结构工作的最佳方法是什么?我是 Cmake 新手,多次尝试使用 add_subdirectory 并没有让我更接近解决方案。我使它仅在我有外部 CmakeLists.txt 并在使用 dir1、dir2 时包含所有库的情况下才起作用,就像文件夹中没有任何 CmakeLists.txt 一样。如有任何帮助,我将不胜感激。
【问题讨论】:
-
我猜你的问题主要是如何用 CLion 做到这一点。在 Visual Studio 中,我使用类似于您描述的方法,但在 IDE 中,我选择要调试/运行的项目。它确实显示了同一工作区中的所有项目。但是,我确实为项目中的每个可执行文件和每个库都有一个 CMakeLists.txt,在根级别有一个 CMakeLists.txt。
-
我最感兴趣的是如何编写相应的CmakeLists.txt,因为我在配置和构建过程中出现了错误。您能否概述每个单独的 CmakeLists.txt 的外观?