我有一个项目,其中编译和测试运行由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。我怎样才能获得项目目录的绝对路径,以便我可以将它包含在变量中,然后在编译期间定义它。
答案 0 :(得分:1)
将路径放在CACHE变量中。它可以通过ccmake命令访问它:
set(PATH_TO_ARPA "${DEFAULT_PATH_TO_ARPA}" CACHE FILEPATH "Description of the option")