<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=utf-8"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
.MsoChpDefault
        {mso-style-type:export-only;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:70.85pt 70.85pt 70.85pt 70.85pt;}
div.WordSection1
        {page:WordSection1;}
--></style></head><body lang=HU link=blue vlink="#954F72"><div class=WordSection1><p class=MsoNormal>Hi Robert!</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Thank you for the help. I don’t know if I could’ve find that solution myself. I guess selecting CUDA as the COMPILE_LANGUAGE I can controll .cu compiler options to select architecture and what not.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Anyhow, if someone needed the minimal template, here it is:</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><a href="https://gist.github.com/MathiasMagnus/0edacac888a758fe233cb69f3e291d62">https://gist.github.com/MathiasMagnus/0edacac888a758fe233cb69f3e291d62</a></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Cheers,</p><p class=MsoNormal>Máté</p><p class=MsoNormal><o:p> </o:p></p><div style='mso-element:para-border-div;border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm'><p class=MsoNormal style='border:none;padding:0cm'><b>Feladó: </b><a href="mailto:robert.maynard@kitware.com">Robert Maynard</a><br><b>Elküldve: </b>2019. február 27., szerda 15:00<br><b>Címzett: </b><a href="mailto:csiga.biga@aol.com">Nagy-Egri MĂĄtĂŠ Ferenc</a><br><b>Másolatot kap: </b><a href="mailto:cmake@cmake.org">CMake MailingList</a><br><b>Tárgy: </b>Re: [CMake] CUDA language support with host compiler flags</p></div><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>You need to guard the flags with `$<COMPILE_LANGUAGE:CXX>` the</p><p class=MsoNormal>evaluation on a given compiler id is done for all sources of a target,</p><p class=MsoNormal>and not on each target source file.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>So you will need something like:</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>set(cxx_flags "$<$<OR:$<CXX_COMPILER_ID:GNU>,$<CXX_COMPILER_ID:Clang>>:-Wall</p><p class=MsoNormal>-Wextra -pedantic></p><p class=MsoNormal>                                               $<$<CXX_COMPILER_ID:MSVC>:/W4")</p><p class=MsoNormal>target_compile_options(${PROJECT_NAME} PRIVATE</p><p class=MsoNormal>$<$<COMPILE_LANGUAGE:CXX>:${cxx_flags}>)</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>On Fri, Feb 22, 2019 at 4:11 AM Máté Ferenc Nagy-Egri via CMake</p><p class=MsoNormal><cmake@cmake.org> wrote:</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> Hi All!</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> I am trying to compile CUDA code with controlling both host and device compiler flags.</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> Currently my CMakeLists.txt looks like:</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> ```</p><p class=MsoNormal>> cmake_minimum_required(VERSION 3.8) # CUDA language support</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> project(CUDA_test LANGUAGES CXX CUDA)</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> if (MSVC)</p><p class=MsoNormal>>   string(REGEX REPLACE "/W[0-9]" "" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS})</p><p class=MsoNormal>> endif (MSVC)</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> set(Hdrs)</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> set(Srcs Main.cu)</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> add_executable(${PROJECT_NAME} ${Hdrs} ${Srcs})</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> target_include_directories(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> target_compile_options(${PROJECT_NAME} PRIVATE $<$<OR:$<CXX_COMPILER_ID:GNU>,$<CXX_COMPILER_ID:Clang>>:-Wall -Wextra -pedantic></p><p class=MsoNormal>>                                                $<$<CXX_COMPILER_ID:MSVC>:/W4>)</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> set_target_properties(${PROJECT_NAME} PROPERTIES CUDA_SEPARABLE_COMPILATION ON</p><p class=MsoNormal>>                                                  CUDA_STANDARD 14</p><p class=MsoNormal>>                                                  CUDA_STANDARD_REQUIRED ON</p><p class=MsoNormal>>                                                  CUDA_EXTENSIONS OFF</p><p class=MsoNormal>>                                                  CXX_STANDARD 14</p><p class=MsoNormal>>                                                  CXX_STANDARD_REQUIRED ON</p><p class=MsoNormal>>                                                  CXX_EXTENSIONS OFF)</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> source_group ("Headers" FILES ${Hdrs})</p><p class=MsoNormal>> source_group ("Sources" FILES ${Srcs})</p><p class=MsoNormal>> ```</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> However, when I compile the code I get the following error:</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> [1/3] Building CUDA object CMakeFiles/CUDA_test.dir/Main.cu.o</p><p class=MsoNormal>> FAILED: CMakeFiles/CUDA_test.dir/Main.cu.o</p><p class=MsoNormal>> /usr/bin/nvcc   -I/var/tmp/src/e75971a9-7e91-6137-abfa-df34048cc171/GCC-Debug-WSL -g   -Wall -Wextra -pedantic -std=c++14 -x cu -dc /var/tmp/src/e75971a9-7e91-6137-abfa-df34048cc171/GCC-Debug-WSL/Main.cu -o CMakeFiles/CUDA_test.dir/Main.cu.o && /usr/bin/nvcc   -I/var/tmp/src/e75971a9-7e91-6137-abfa-df34048cc171/GCC-Debug-WSL -g   -Wall -Wextra -pedantic -std=c++14 -x cu -M /var/tmp/src/e75971a9-7e91-6137-abfa-df34048cc171/GCC-Debug-WSL/Main.cu -MT CMakeFiles/CUDA_test.dir/Main.cu.o -o CMakeFiles/CUDA_test.dir/Main.cu.o.d</p><p class=MsoNormal>> nvcc fatal   : Unknown option 'Wall'</p><p class=MsoNormal>> ninja: build stopped: subcommand failed.</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> CMake seems to pass -Wall -Wextra -pedantic to the device compiler as well, even though it is neither GNU nor Clang, but CUDA. How can I specify warning and similar flags separatly for the host and device compilers?</p><p class=MsoNormal>> --</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> Powered by www.kitware.com</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> Kitware offers various services to support the CMake community. For more information on each offering, please visit:</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> CMake Support: http://cmake.org/cmake/help/support.html</p><p class=MsoNormal>> CMake Consulting: http://cmake.org/cmake/help/consulting.html</p><p class=MsoNormal>> CMake Training Courses: http://cmake.org/cmake/help/training.html</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> Follow this link to subscribe/unsubscribe:</p><p class=MsoNormal>> https://cmake.org/mailman/listinfo/cmake</p><p class=MsoNormal><o:p> </o:p></p></div></body></html>