cmake:CUDA 目标的特定于目标的预处理器定义似乎不起作用
我在 Mac OSX 10.6 上使用 cmake 2.8.1 和 CUDA 3.0。
所以我添加了一个 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 目标,我如何弄清楚 cmake
对 set_target_properties 行的作用?到目前为止,谷歌搜索并没有帮助,解决方法会很酷。
I'm using cmake 2.8.1 on Mac OSX 10.6 with CUDA 3.0.
So I added a CUDA target which needs BLOCK_SIZE set to some number in order to compile.
cuda_add_executable(SimpleTestsCUDA
SimpleTests.cu
BlockMatrix.cpp
Matrix.cpp
)
set_target_properties(SimpleTestsCUDA PROPERTIES COMPILE_FLAGS -DBLOCK_SIZE=3)
When running make VERBOSE=1
I noticed that nvcc
is invoked w/o -DBLOCK_SIZE=3
, which results in an error, because BLOCK_SIZE
is used in the code, but defined nowhere. Now I used the same definition for a CPU target (using add_executable(...)
) and there it worked.
So now the questions: How do I figure out what cmake
does with the set_target_properties
line if it points to a CUDA target? Googling around didn't help so far and a workaround would be cool..
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我认为最好的方法是将“OPTIONS -DBLOCK_SIZE = 3”添加到cuda_add_executable。所以你的行看起来像这样:
或者你可以在 cuda_add_executable 之前设置它:
I think the best way to do this is by adding "OPTIONS -DBLOCK_SIZE=3" to cuda_add_executable. So your line would look like this:
Or you can set it before cuda_add_executable:
到目前为止,我发现的唯一解决方法是使用remove_definitions:
在目标之前执行此操作似乎有帮助。
The only workaround I found so far is using remove_definitions:
Doing this before a target seems to help.