我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)
不确定为什么要用这个变量打开一个文件...
问题在于您的使用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().