Cmake add_definition用于计算文件的绝对路径

时间:2015-03-13 15:19:00

标签: cmake

我有一个项目,其中编译和测试运行由cmake管理。该测试涉及读取一个特殊的测试文件,该文件位于与测试文件不同的目录中,需要一个绝对路径。我在tests.cpp中定义testfile的路径,如下所示:

#define ARPA_TESTFILEPATH "/path/to/project/root/arpa/toy_lm.arpa"

我想通过cmake传递该定义,以便其他人可以签出项目并运行测试而无需修改任何内容。我知道我可以通过以下方式在cmake中添加定义:

add_definitions(-DARPA_TESTFILE="/path/to/project/root/arpa/toy_lm.arpa")

但是,如何向定义中添加变量以便自动解析路径?我正在寻找类似的东西:

add_definitions(-DARPA_TESTFILE="$(PROJECTROOT)/arpa/toy_lm.arpa")

这可能吗?

编辑:

基本上说项目已在目录

中签出
  

/首页/ pesho /项目   项目目录包含CMakeLists.txt。我怎样才能获得项目目录的绝对路径,以便我可以将它包含在变量中,然后在编译期间定义它。

1 个答案:

答案 0 :(得分:1)

将路径放在CACHE变量中。它可以通过ccmake命令访问它:

set(PATH_TO_ARPA "${DEFAULT_PATH_TO_ARPA}" CACHE FILEPATH "Description of the option")

请参阅文档:http://www.cmake.org/cmake/help/v3.0/command/set.html