【发布时间】:2014-09-01 16:14:35
【问题描述】:
我正在使用 cmake 在 C++ 中构建我的项目。假设我的源文件夹中有以下目录
Source
|_Dir1
| |_Class.cpp
| |_Class.hpp
|
|_Dir2
|_Main.cpp
在 Dir1 中有一个类及其头文件和实现文件(Class.cpp 和 Class.hpp)。
在 Dir2 中有一个使用 Dir1 中的类的主应用程序
告诉 Dir2 中的 CMakeLists 使用 Dir1/Class.cpp 文件构建可执行文件的好方法是什么?
编辑: 更具体地说,我想定义 Class.cpp 的源文件必须在 Dir1 的 CMakeLists.txt 中使用,而不是在 Dir2 中。以另一种方式做这件事对我来说是完全错误的,而且很难使用,所以如果他们强制我这样做是有原因的,那么对这个主题进行一些澄清会很好。
我目前正在做的是对 Dir2/CMakeLists.txt 中的 Class.cpp 文件位置进行硬编码,但是当我有一堆类一起交互时,这无法扩展。
【问题讨论】:
-
您可以使用
FILE(GLOB ...)操作来收集一堆具有特定扩展名的文件。 -
但这不是只在 Dir2 内部有效吗?我想使用 Dir1 中的 cpp 文件。我特别希望不必指定可执行文件夹的 CMakeLists 中的所有文件,而是让每个文件夹注册它拥有的 cpps。
-
@Setzer22 您可以使用
RELATIVE选项来指定您想要的任何目录。看看 CMake 的手册怎么样? -
@πάντα ῥεῖ 我不确定我是否理解相关函数的作用。你确定这可以帮助我从另一个文件夹定义我的可执行文件的源文件吗?
标签: cmake