c++ - C+ + - 最简单但完整的CMake例子

我对CMake的工作方式感到困惑,我想知道的是,我应该如何构建我的项目,以便我的CMake在未来需要最少的维护,例如,当我在src树中添加新文件夹时,我不想更新CMakeList.txt。

这就是我想象中的项目结构,但是请注意,这只是一个例子,


myProject


 src/


 module1/


 module1.h


 module1.cpp


 module2/


 [...]


 main.cpp


 test/


 test1.cpp


 resources/


 file.png


 bin


 [execute cmake ..]



另外,我的程序知道资源的位置是很重要的,我想知道管理资源的推荐方式。 我不想使用"../resources/file.png"访问我的资源

时间:

最基本但是完整的例子可以在概念教程


cmake_minimum_required (VERSION 2.6)


project (Tutorial)


add_executable(Tutorial tutorial.cxx)



对于你的项目例子,你可能有:


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


#define RESOURCES_PATH"@RESOURCES_PATH@"



然后在CMakeLists.txt中添加:


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}")



最后,在代码中需要路径时,可以执行以下操作:


#include"configuration.h"



...



string resourcePath = string(RESOURCE_PATH) +"file.png";



...