不知何故,我完全被CMake的工作原理搞糊涂了。每当我认为我越来越接近理解CMake是如何编写的时候,它就消失在我读到的下一个例子中。我想知道的是,我应该如何构建我的项目,以便我的CMake在将来需要最少的维护。例如,当我在src树中添加一个新文件夹时,我不想更新我的CMakeList.txt,这与所有其他src文件夹的工作方式完全相同。
这是我如何想象我的项目的结构,但请这只是一个例子。如果推荐的方法不同,请告诉我,并告诉我怎么做。
myProject
src/
module1/
module1.h
module1.cpp
module2/
[...]
main.cpp
test/
test1.cpp
resources/
file.png
bin
[execute cmake ..]
顺便说一句,重要的是我的程序知道资源在哪里。我想知道管理资源的推荐方式。我不想使用"../ resources /file.png“来访问我的资源
发布于 2014-01-16 21:47:25
最基本但最完整的示例可以在CMake tutorial中找到:
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";
https://stackoverflow.com/questions/21163188
复制相似问题