Ah, I ran into this quirk too - the issue is that you have the quotes incorrect:
-DCMAKE_CXX_FLAGS="-march=native" Should be like this instead: "-DCMAKE_CXX_FLAGS=-march=native" Try that and see if it helps, I am pretty sure I ran into the exact same problem. On Thu, Jan 21, 2016 at 8:27 AM, fkillus <fkil...@googlemail.com> wrote: > Thanks for clarifying that external projects are not aware of the project > they are embedded in. > The CMAKE_COMPILER_IS_GNUCXX variable should be set automatically by CMake > as far > as I understand it (see https://cmake.org/Wiki/CMake_Useful_Variables). > > I narrowed down the problem by creating a minimal setup which still > reproduces the issue. > In this case the super project is simply a wrapper around an external dummy > project. > > external/CMakeLists.txt: > > cmake_minimum_required( VERSION 3.4 ) > project( external ) > message( "External - CMAKE_COMPILER_IS_GNUCXX: " > ${CMAKE_COMPILER_IS_GNUCXX} ) > message( "External - CMAKE_CXX_COMPILER_ID: " ${CMAKE_CXX_COMPILER_ID} ) > message( "External - CMAKE_CXX_FLAGS: " ${CMAKE_CXX_FLAGS} ) > > super/CMakeLists.txt: > > cmake_minimum_required( VERSION 3.4 ) > project( super ) > message( "Super - CMAKE_COMPILER_IS_GNUCXX: " ${CMAKE_COMPILER_IS_GNUCXX} > ) > message( "Super - CMAKE_CXX_COMPILER_ID: " ${CMAKE_CXX_COMPILER_ID} ) > message( "Super - CMAKE_CXX_FLAGS: " ${CMAKE_CXX_FLAGS} ) > include( ExternalProject ) > ExternalProject_Add( > external > DOWNLOAD_COMMAND "" > SOURCE_DIR ${CMAKE_SOURCE_DIR}/../external > CMAKE_ARGS > -DCMAKE_CXX_FLAGS="-march=native" > INSTALL_COMMAND "" > ) > > The problem occurs when the CMAKE_CXX_FLAGS variable is set inside the > ExternalProject_Add > command using quotes (i.e. "-march=native" in this example). The output > obtained when configuring > the super project with 'cmake ../super' is: > > -- The C compiler identification is GNU 5.2.0 > -- The CXX compiler identification is GNU 5.2.0 > -- Check for working C compiler: /usr/bin/cc > -- Check for working C compiler: /usr/bin/cc -- works > -- Detecting C compiler ABI info > -- Detecting C compiler ABI info - done > -- Detecting C compile features > -- Detecting C compile features - done > -- Check for working CXX compiler: /usr/bin/c++ > -- Check for working CXX compiler: /usr/bin/c++ -- works > -- Detecting CXX compiler ABI info > -- Detecting CXX compiler ABI info - done > -- Detecting CXX compile features > -- Detecting CXX compile features - done > Super - CMAKE_COMPILER_IS_GNUCXX: 1 > Super - CMAKE_CXX_COMPILER_ID: GNU > Super - CMAKE_CXX_FLAGS: > -- Configuring done > -- Generating done > > Afterwards building with 'make' results in: > > [ 12%] Creating directories for 'external' > [ 25%] No download step for 'external' > [ 37%] No patch step for 'external' > [ 50%] No update step for 'external' > [ 62%] Performing configure step for 'external' > -- The C compiler identification is GNU 5.2.0 > -- The CXX compiler identification is unknown > -- Check for working C compiler: /usr/bin/cc > -- Check for working C compiler: /usr/bin/cc -- works > -- Detecting C compiler ABI info > -- Detecting C compiler ABI info - done > -- Detecting C compile features > -- Detecting C compile features - done > -- Check for working CXX compiler: /usr/bin/c++ > -- Check for working CXX compiler: /usr/bin/c++ -- works > -- Detecting CXX compiler ABI info > -- Detecting CXX compiler ABI info - done > External - CMAKE_COMPILER_IS_GNUCXX: > External - CMAKE_CXX_COMPILER_ID: > External - CMAKE_CXX_FLAGS: "-march=native" > -- Configuring done > -- Generating done > > This shows the compiler is not correctly identified for the external > project. Directly configuring > the external project with 'cmake -DCMAKE_CXX_FLAGS="-march=native" > ../external' works though: > > -- The C compiler identification is GNU 5.2.0 > -- The CXX compiler identification is GNU 5.2.0 > -- Check for working C compiler: /usr/bin/cc > -- Check for working C compiler: /usr/bin/cc -- works > -- Detecting C compiler ABI info > -- Detecting C compiler ABI info - done > -- Detecting C compile features > -- Detecting C compile features - done > -- Check for working CXX compiler: /usr/bin/c++ > -- Check for working CXX compiler: /usr/bin/c++ -- works > -- Detecting CXX compiler ABI info > -- Detecting CXX compiler ABI info - done > -- Detecting CXX compile features > -- Detecting CXX compile features - done > External - CMAKE_COMPILER_IS_GNUCXX: 1 > External - CMAKE_CXX_COMPILER_ID: GNU > External - CMAKE_CXX_FLAGS: -march=native > -- Configuring done > -- Generating done > > > It also works if the quotations marks in the super project listfile are > removed. I.e. changing > CMAKE_ARGS > -DCMAKE_CXX_FLAGS="-march=native" > to > CMAKE_ARGS > -DCMAKE_CXX_FLAGS=-march=native > > The question is now, is it still possible to add mutiple compile flags if > one cannot use quotation marks? > > > On Wed, Jan 20, 2016 at 6:58 PM, Nicholas Braden > <nicholas11bra...@gmail.com> wrote: >> >> Where/how is that variable normally set? External projects have no >> awareness of the project they are in, they just run CMake as usual the >> same way you would. If the variable is normally set by CMake itself, >> make sure that your containing project and the external project both >> find the same compiler. (They each do their own automatic search for >> compilers) >> >> On Wed, Jan 20, 2016 at 11:41 AM, fkillus via CMake <cmake@cmake.org> >> wrote: >> > I have been trying to compile Ogre [1] as external dependency with >> > ExternalProject_Add(). In theory this should be straightforward since >> > Ogre >> > itself also uses CMake as buildsystem. However, in the process I >> > encountered >> > the following problem: >> > >> > Ogre checks the value of the CMAKE_COMPILER_IS_GNUCXX variable in some >> > places (e.g. [2]). I am running Linux and compiling with g++ and >> > everything >> > works fine if I manually configure Ogre with cmake or cmake-gui. >> > Unfortunately, after wrapping everything inside ExternalProject_Add(), >> > the >> > CMAK_COMPILER_IS_GNUCXX variable is no longer being set correctly. >> > >> > A simple workaround is to manually set this variable, i.e.: >> > >> > ExternalProject_Add( >> > ogre >> > URL https://bitbucket.org/sinbad/ogre/get/v1-9-0.zip >> > CMAKE_ARGS >> > -DCMAKE_INSTALL_PREFIX=${DEPENDENCIES_OUTPUT_DIR} >> > -DCMAKE_COMPILER_IS_GNUCXX=${CMAKE_COMPILER_IS_GNUCXX} # >> > workaround >> > ) >> > >> > This works, but I'm uncertain if this should be necessary. Is this a bug >> > or >> > a feature? >> > >> > >> > [1] https://bitbucket.org/sinbad/ogre >> > [2] >> > >> > https://bitbucket.org/sinbad/ogre/src/0d580c7216abe27fafe41cb43e31d8ed86ded591/CMake/Utils/OgreConfigTargets.cmake?at=default&fileviewer=file-view-default#OgreConfigTargets.cmake-277 >> > >> > -- >> > >> > 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: >> > http://public.kitware.com/mailman/listinfo/cmake > > -- 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: http://public.kitware.com/mailman/listinfo/cmake