如何在 Cmake 中正确设置标题路径以在我的项目中构建 Box2D

Posted

技术标签:

【中文标题】如何在 Cmake 中正确设置标题路径以在我的项目中构建 Box2D【英文标题】:How to correctly for header paths in Cmake to build Box2D inside my project 【发布时间】:2018-08-04 16:25:19 【问题描述】:

尝试构建Box2D。它使用 premake 作为构建系统,但我想将其更改为 CMake,以便与我的程序一起编译。

它的主要标题是$project_root_folder_here/Box2D/Box2D.h。该文件还包括一堆其他带有完整路径的标头,例如#include "Box2D/Common/b2Settings.h"#include "Box2D/Common/b2Draw.h"。所有 Box2D 文件都通过完整路径包含相应的标头。

我的问题是我不知道如何正确设置 CMakeLists.txt 以导入 Box2D 源而不更改其文件(#include 路径)以反映我的项目文件夹结构,如下所示:

project_root_folder
-> Box2D/
---> Common/
-----> ...
---> Collision/
-----> ...
---> Dynamics/
-----> ...
---> Box2D.h
-> MySources/
---> some_header.h
---> some_source.cpp
---> main.cpp
-> CMakeLists.txt
-> Build/

我尝试设置 include_directories("Box2D") 并指定所有可能的标头和源,但我仍然无法构建它。

【问题讨论】:

在 github 中测试这个简单的项目。它有每个模块的目录,我认为它可以用于在另一个目录中分离听者和 cpp 文件:github.com/panahiehsancom/CMakeTree 【参考方案1】:

<project_root_folder>/CMakeLists.txt 中,您可以执行以下操作:

include_directories($CMAKE_CURRENT_SOURCE_DIR)

这将确保可以相对于<project_root_folder> 找到标头

【讨论】:

以上是关于如何在 Cmake 中正确设置标题路径以在我的项目中构建 Box2D的主要内容,如果未能解决你的问题,请参考以下文章