如何嵌入资源文件/ CMake的路径(在linux上)

时间:2013-07-31 09:51:53

标签: c++ cmake

我正在创建一个C ++类,它有一个像这样的构造函数:

MyClass(const std::string& config_file);

即。在实例化对象时,应将配置文件传递给构造函数。作为项目的一部分,我创建了一个默认配置文件,可能会在大约90%的情况下使用,我希望人们可以使用我的课程:

MyClass myInstance(DEFAULT_CONFIG_FILE);

即。我希望符号'DEFAULT_CONFIG_FILE'指向我作为项目的一部分创建的配置文件的路径。但问题是我不知道人们实际安装库的位置。这里有(CMake ??)技巧/最佳实践吗?

我想可以做点像

set( DEFAULT_CONFIG_FILE ${CMAKE_INSTALL_PREFIX}/share/app/default_config.json)

但是后来构建目录中的东西不起作用了?!

Joakim

1 个答案:

答案 0 :(得分:0)

在您显示的set命令之后,您可以在CMakeLists.txt中添加如下行:

add_definitions(-DDEFAULT_CONFIG_FILE=${DEFAULT_CONFIG_FILE})

add_definitions(-D`DEFAULT_CONFIG_FILE=${DEFAULT_CONFIG_FILE}`)

(你应该试验如果你的路径包含空格会发生什么,只是为了一般)

这应该为您提供在编译时使用的DEFAULT_CONFIG_FILE。

一些有用的链接:
add_definition documentation
CMake: when to use add_definitions instead of set_target_properties(target PROPERTIES COMPILE_DEFINITIONS definitions)
spacing in -D option in cmake