c++ - 从代码中引用 CMAKE 变量

标签 c++ cmake

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

我的尝试如下:

在 CMakeLists.txt 文件中

ADD_DEFINITIONS(-DNV12_2_ARGB_PTX_DIR "${CMAKE_CURRENT_SOURCE_DIR}/ptx")

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

#ifdef NV12_2_ARGB_PTX_DIR
    #define PTX_DIR D_NV12_2_ARGB_PTX_DIR
#endif

当我尝试将其称为:

std::cout << PTX_DIR << std::endl;

我得到错误:

'C:/Users/Luca/project/src/lib/ptx': No such file or directory  

此外,Visual Studio intellisense 提示:

IntelliSense: identifier "PTX_DIR" is undefined 

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

最佳答案

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

你可能是这样想的:

add_definitions(-DNV12_2_ARGB_PTX_DIR="${CMAKE_CURRENT_SOURCE_DIR}/ptx")

请注意,您可能需要尝试转义引号,以便将它们一直转换为 C++。或者,您可以使用 configure_file() .

关于c++ - 从代码中引用 CMAKE 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40219043/

相关文章:

android-studio - Android Studio 2.3 CMake 不显示错误并且不会编译 C++ 代码

C++读取缓冲区中的整个文件

c++ - 如何在 Arduino 中获得连续的 LED 闪光灯? [C/C++]

c++ - vector 删除无需设置 iter 返回值即可工作

c++ - CMake错误: Could NOT find OpenMP_C (missing: OpenMP_C_FLAGS) using clang on Mac OS

opencv - 使用 Cmake 配置 C++ OpenCV 项目

c++ - 不要在 C++ 中输出尾随零

c++ - 如何使用在函数中本地创建的对象而不将其复制到内存中?

testing - 托管在 github 上的 cmake 项目的持续集成软件

c++ - 如何修复v8错误的 undefined reference ?