我正在创建一个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
答案 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