我在使用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
对{{1}}行的影响?谷歌搜索到目前为止没有帮助,一个解决方案将很酷..
答案 0 :(得分:4)
我认为最好的方法是在cuda_add_executable中添加“OPTIONS -DBLOCK_SIZE = 3”。所以你的行看起来像这样:
cuda_add_executable(SimpleTestsCUDA
SimpleTests.cu
BlockMatrix.cpp
Matrix.cpp
OPTIONS -DBLOCK_SIZE=3
)
或者您可以在cuda_add_executable之前设置它:
SET(CUDA_NVCC_FLAGS -DBLOCK_SIZE=3)
答案 1 :(得分:0)
到目前为止我找到的唯一解决方法是使用remove_definitions:
remove_definitions(-DBLOCK_SIZE=3)
add_definitions(-DBLOCK_SIZE=32)
在目标之前执行此操作似乎有所帮助。