【发布时间】:2015-12-16 12:34:45
【问题描述】:
我正在尝试使用 CMake 制作可执行文件。 此可执行文件需要位于项目中的文件的完整路径。
int main()
{
std::ifstream("fullpath_to_file");
//....
}
我认为如果 CMake 可以用用户指定的字符串替换源代码中的某些符号,就不需要硬编码 fullpath。
例如,如果 CMake 可以将源代码(cpp) 中的 ${CMAKE_PROJECT_DIR} 替换为 ${PROJECT_SOURCE_DIR} 这样的 cmake 变量,那么我就可以这样编写源代码。
int main()
{
std::ifstream("${CMAKE_PROJECT_DIR}/input/my_input.txt");
//....
}
有什么办法吗?
谢谢。
【问题讨论】:
-
您可以使用run an arbitrary program,包括
awk或sed之类的处理器,甚至可以使用m4之类的专用预处理器来预处理您的文件并进行此类替换。一个“更好”(或至少更简单)的解决方案是只定义标准 C++ 预处理器宏。 -
@JoachimPileborg 然后你的构建目录中有源文件。或者更糟糕的是,修改了源目录中的源文件。不,不,不要这样做。