从代码引用CMAKE变量

Luc*_*uca 7 c++ cmake

CMAKE 3.4.3在Windows上使用,我想要做的是在CMAKE中设置一个路径并尝试在我的C++文件中引用它.

我尝试的内容如下:

在CMakeLists.txt文件中

ADD_DEFINITIONS(-DNV12_2_ARGB_PTX_DIR "${CMAKE_CURRENT_SOURCE_DIR}/ptx")
Run Code Online (Sandbox Code Playgroud)

现在,我尝试从我的C++文件中引用它,如下所示:

#ifdef NV12_2_ARGB_PTX_DIR
    #define PTX_DIR D_NV12_2_ARGB_PTX_DIR
#endif
Run Code Online (Sandbox Code Playgroud)

当我尝试将其称为:

std::cout << PTX_DIR << std::endl;
Run Code Online (Sandbox Code Playgroud)

我收到错误:

'C:/Users/Luca/project/src/lib/ptx': No such file or directory  
Run Code Online (Sandbox Code Playgroud)

此外,Visual studio intellisense抱怨:

IntelliSense: identifier "PTX_DIR" is undefined 
Run Code Online (Sandbox Code Playgroud)

不确定为什么要用这个变量打开一个文件...

Rei*_*ica 9

问题在于您的使用add_definitions.您实际上是${CMAKE_CURRENT_SOURCE_DIR}/ptx在编译器的命令行上传递作为附加参数的值,编译器可能会将其解释为应编译的源文件.检查调用的完整命令行以确定.

你可能打算这样:

add_definitions(-DNV12_2_ARGB_PTX_DIR="${CMAKE_CURRENT_SOURCE_DIR}/ptx")
Run Code Online (Sandbox Code Playgroud)

请注意,您可能必须使用转义引号来将它们一直提升到C++.或者,您可以使用configure_file().