[CMake] CMAKE doesn't pass NVCC flags?

Stephen McDowell sjm324 at cornell.edu
Tue Jul 24 17:55:45 EDT 2018


I think you are mixing old and new approaches. Since you have enabled the
CUDA language (via your project(...) call), you should be using either
CUDAFLAGS or CMAKE_CUDA_FLAGS.

I think CUDA_NVCC_FLAGS is only used for the old cuda_add_library or
executable functions.

Note that finding the cuda package should no longer be necessary. If you
support non-CUDA builds you should use CheckLanguage and
enable_language(CUDA), and remove CUDA from the project(...) call.
Currently if nvcc is not found, configuration will fail because you have
CUDA in the project command which makes it required.

Hope that helps!

-Stephen

On Tue, Jul 24, 2018, 1:48 PM Quang Ha <quang.t.ha.20 at gmail.com> wrote:

> So, it doesn't seem that my setting in NVCC flags is being used:
>
> In CMakeLists.txt:
>
> project(tangram LANGUAGES CXX CUDA)
> [...]
>
>     FIND_PACKAGE(CUDA REQUIRED)
>     if(CUDA_FOUND)
>       add_definitions(-DCUDA_CALLABLE="__host__ __device__")
>       set(CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS};-Xcompiler="-fopenmp -fPIC")
>       set(CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS};--std=c++11
> --expt-relaxed-constexpr)
>       set(CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS};-gencode
> arch=compute_70,code=sm_70)
>       set(CUDA_PROPAGATE_HOST_FLAGS ON)
>       set(CUDA_SEPARABLE_COMPILATION OFF)
>       message(STATUS "CUDA include directories ${CUDA_INCLUDE_DIRS}")
>       message(STATUS "Overwriting THRUST_DIR to point to
> ${CUDA_INCLUDE_DIRS}/thrust")
>       set(THRUST_DIR "${CUDA_INCLUDE_DIRS}")
>       set(EXTRA_LIBS ${CUDA_LIBRARIES})
>       message("CUDA flags" ${CUDA_NVCC_FLAGS})
>     else(CUDA_FOUND)
>       message(FATAL "CUDA not found")
>     endif(CUDA_FOUND)
> [...]
>
> Then, at cmake stage:
> [...]
> -- Overwriting THRUST_DIR to point to
> /projects/opt/centos7/cuda/9.0/include/thrust
> CUDA flags-Xcompiler="-fopenmp
> -fPIC"--std=c++11--expt-relaxed-constexpr-gencodearch=compute_70,code=sm_70
> -- Adding application directory app
> [...]
>
> But then, build fail, and when I do make VERBOSE=1:
> [...]
> [ 60%] Building CUDA object
> app/simple-vfgen-cuda/CMakeFiles/simple-vfgen-cuda.dir/simple-vfgen-cuda.cu.o
> cd /home/qth20/develop/tangram/build/app/simple-vfgen-cuda &&
> /projects/opt/centos7/cuda/9.0/bin/nvcc  -DCUDA_CALLABLE="\"__host__
> __device__\"" -DHAVE_LAPACKE -DTHRUST
> -DTHRUST_DEVICE_SYSTEM=THRUST_DEVICE_SYSTEM_CUDA
> -DTHRUST_HOST_SYSTEM=THRUST_HOST_SYSTEM_OMP -I/home/qth20/develop/tangram
> -I/home/qth20/develop/tangram/build
> -I/home/qth20/develop/tangram/cinch/logging
> -I/home/qth20/installed/jali/include
> -I/home/qth20/installed/jali-tpls/include
> -I/home/qth20/installed/jali-tpls/trilinos-12-10-1/include
> -I/projects/opt/centos7/openmpi/3.1.0-gcc_8.1.0/include
> -I/home/qth20/installed/jali-tpls/trilinos-12-10-1/lib/cmake/Zoltan/../../../include
> -I/home/qth20/installed/jali-tpls/include/UnitTest++ -I/usr/include/lapacke
> -I/home/qth20/installed/xmof2d/include
> -I/projects/opt/centos7/cuda/9.0/include  -O3 -DNDEBUG   -std=c++11 -x cu
> -c /home/qth20/develop/tangram/app/simple-vfgen-cuda/simple-vfgen-cuda.cu
> -o CMakeFiles/simple-vfgen-cuda.dir/simple-vfgen-cuda.cu.o
> [...]
>
> None of the flags was passed into nvcc. This is with cmake/3.11.1. Does
> upgrading to 3.12 recommended to solve the issue?
>
> Thanks,
> Quang
> --
>
> Powered by www.kitware.com
>
> Please keep messages on-topic and check the CMake FAQ at:
> http://www.cmake.org/Wiki/CMake_FAQ
>
> Kitware offers various services to support the CMake community. For more
> information on each offering, please visit:
>
> CMake Support: http://cmake.org/cmake/help/support.html
> CMake Consulting: http://cmake.org/cmake/help/consulting.html
> CMake Training Courses: http://cmake.org/cmake/help/training.html
>
> Visit other Kitware open-source projects at
> http://www.kitware.com/opensource/opensource.html
>
> Follow this link to subscribe/unsubscribe:
> https://cmake.org/mailman/listinfo/cmake
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://cmake.org/pipermail/cmake/attachments/20180724/5de48b59/attachment.html>


More information about the CMake mailing list