cmake:CUDA 目标的目标特定预处理器定义似乎不起作用

标签 cmake cuda

我在带有 CUDA 3.0 的 Mac OSX 10.6 上使用 cmake 2.8.1。

所以我添加了一个 CUDA 目标,它需要将 BLOCK_SIZE 设置为某个数字才能编译。

cuda_add_executable(SimpleTestsCUDA
                    SimpleTests.cu
                    BlockMatrix.cpp 
                    Matrix.cpp
)

set_target_properties(SimpleTestsCUDA PROPERTIES COMPILE_FLAGS -DBLOCK_SIZE=3)

当运行 make VERBOSE=1 时,我注意到 nvcc 是在没有 -DBLOCK_SIZE=3 的情况下调用的,这会导致错误,因为 BLOCK_SIZE 在代码中使用,但没有定义。现在,我对 CPU 目标使用了相同的定义(使用 add_executable(...)),它在那里起作用了。

那么现在的问题是:如果 cmake 指向 CUDA 目标,我如何确定 set_target_properties 行的作用?谷歌搜索到目前为止没有帮助,解决方法会很酷..

最佳答案

我认为最好的方法是将“OPTIONS -DBLOCK_SIZE=3”添加到 cuda_add_executable。所以你的行看起来像这样:

cuda_add_executable(SimpleTestsCUDA
                SimpleTests.cu
                BlockMatrix.cpp 
                Matrix.cpp
                OPTIONS -DBLOCK_SIZE=3
)

或者你可以在cuda_add_executable之前设置:

SET(CUDA_NVCC_FLAGS -DBLOCK_SIZE=3)

关于cmake:CUDA 目标的目标特定预处理器定义似乎不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2843075/

相关文章:

c++ - x64 上 Boost 1.60 和 VS 2013 的链接器错误

CUDA 线程 block 大小 1024 不起作用(cc=20,sm=21)

opengl - 如何将GPU全局内存中的像素阵列直接显示到屏幕上?

crash - 遇到CUDA不可纠正的ECC错误

performance - cuFFT 运行缓慢 - 有什么方法可以加速吗?

build - cmake 创建一个共享对象

c++ - Ogre3D 1.9,cmake,XCode,不知道在FREETYPE_FT2BUILD_INCLUDE_DIR里面放什么

cmake - 如何调试 CMakeLists.txt 文件?

使用 CMake 进行 Boost 测试 - 未定义的 main

c++ - CUDA 点积