首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >最简单但最完整的CMake示例

最简单但最完整的CMake示例
EN

Stack Overflow用户
提问于 2014-01-16 21:30:25
回答 1查看 99.3K关注 0票数 126

不知何故,我完全被CMake的工作原理搞糊涂了。每当我认为我越来越接近理解CMake是如何编写的时候,它就消失在我读到的下一个例子中。我想知道的是,我应该如何构建我的项目,以便我的CMake在将来需要最少的维护。例如,当我在src树中添加一个新文件夹时,我不想更新我的CMakeList.txt,这与所有其他src文件夹的工作方式完全相同。

这是我如何想象我的项目的结构,但请这只是一个例子。如果推荐的方法不同,请告诉我,并告诉我怎么做。

代码语言:javascript
复制
myProject
    src/
        module1/
            module1.h
            module1.cpp
        module2/
            [...]
        main.cpp
    test/
        test1.cpp
    resources/
        file.png
    bin
        [execute cmake ..]

顺便说一句,重要的是我的程序知道资源在哪里。我想知道管理资源的推荐方式。我不想使用"../ resources /file.png“来访问我的资源

EN

回答 1

Stack Overflow用户

发布于 2014-01-16 21:47:25

最基本但最完整的示例可以在CMake tutorial中找到:

代码语言:javascript
复制
cmake_minimum_required (VERSION 2.6)
project (Tutorial)
add_executable(Tutorial tutorial.cxx)

对于您的项目示例,您可能具有以下条件:

代码语言:javascript
复制
cmake_minimum_required (VERSION 2.6)
project (MyProject)
add_executable(myexec src/module1/module1.cpp src/module2/module2.cpp src/main.cpp)
add_executable(mytest test1.cpp)

对于您的其他问题,本教程中再次介绍了一种方法:创建一个包含在代码中的可配置头文件。为此,创建一个包含以下内容的文件configuration.h.in

代码语言:javascript
复制
#define RESOURCES_PATH "@RESOURCES_PATH@"

然后在你的CMakeLists.txt中添加:

代码语言:javascript
复制
set(RESOURCES_PATH "${PROJECT_SOURCE_DIR}/resources/"
# configure a header file to pass some of the CMake settings
# to the source code
configure_file (
  "${PROJECT_SOURCE_DIR}/configuration.h.in"
  "${PROJECT_BINARY_DIR}/configuration.h"
)

# add the binary tree to the search path for include files
# so that we will find TutorialConfig.h
include_directories("${PROJECT_BINARY_DIR}")

最后,在代码中需要路径的地方,可以这样做:

代码语言:javascript
复制
#include "configuration.h"

...

string resourcePath = string(RESOURCE_PATH) + "file.png";
票数 42
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21163188

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档