我目前正在尝试将cmake
用于我的一个项目。 它的结构是相当微不足道的,由主文件夹和“库”子文件夹还包含标头和源文件:用cmake正确配置子目录
./ sourceA.cpp ...
./lib/ sourceB.cpp headerB.cpp ...
我希望让用户定义一些常量,然后应该由预处理器可以使用更换一些占位符,如:char data[DIMENSION]
在我用下面的CMakeLists.txt索要值,并将其设置在主目录:
...
set(DATASET_DIMENSION "4" CACHE STRING "The dimensions of the dataset used.")
set_property(
GLOBAL
PROPERTY COMPILE_DEFINITIONS DIMENSION=${DATASET_DIMENSION}
APPEND
)
add_subdirectory(lib)
...
在子目录中,CMakeLists.t xt主要添加源文件并调用add_library(lib ${lib_SOURCES})
。
问题:如果我执行make
,编译器抱怨说,DIMENSION
尚未更换:
.../lib/someheader.h:7:19:error: ‘DIMENSION’ undeclared here (not in a function)
有什么不对我的配置?我试图按照cmake的例子,他们指定(我的重点):
CMake的时候在顶级目录将处理的CMakeLists.txt文件执行,然后下降到上市的子目录。 变量,包括路径,库路径等继承。
这似乎现在工作。谢谢! – Patrick 2013-03-28 13:48:45