On 1 November at 10:02, Stephen Morris wrote:
> My approach is basically to set up a custom command thus:
> set(CXX_FLAGS ${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_DEBUG}) .. or whatever,
> depending on the current configuration..
> get_target_property(compile_options, mytarget, COMPILE_OPTIONS)
> add_custom_command(OUTPUT myheader.h.gch
> COMMAND ${CMAKE_CXX_COMPILER}
> ${CXX_FLAGS} ${compile_options} -fPIC -std=gnu++17 -c myheader.h -o
> myheader.h.gch
> DEPENDS myheader.h)
> add_custom_target(BuildMyPCH
> DEPENDS myheader.h.gch)
> add_dependencies(mytarget, BuildMyPCH)
My earlier question still stands, but at the time I wrote it I had only tested
it for Debug builds where ${CMAKE_CXX_FLAGS_DEBUG} consisted of a single item,
'-g'.
I've since tried doing the same thing for a Release build, and this failed
because ${CMAKE_CXX_FLAGS_RELEASE} has two items, '-O3 -DNDEBUG'. When the
custom command is executed, this somehow becomes "-O3\ -DNDEBUG" on the command
line, and the presence of the stray backslash causes the compilation to fail
with the message,
"cc1plus: error: argument to '-O' should be a non-negative integer. 'g', 's' or
'fast'"
So why isn't the cmake variable placed properly onto the command line, and what
can I do to prevent this behaviour?
--
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