Why does set(CMAKE_CXX_FLGAS "${CMAKE_CXX_FLAGS} ${extra_flags}") works, but set(CMAKE_CXX_FLGAS ${CMAKE_CXX_FLAGS} ${extra_flags}) doesn’t ?
In my case, I got the g++ error: " no input files because of the above.
Why does set(CMAKE_CXX_FLGAS "${CMAKE_CXX_FLAGS} ${extra_flags}") works, but set(CMAKE_CXX_FLGAS ${CMAKE_CXX_FLAGS} ${extra_flags}) doesn’t ?
In my case, I got the g++ error: " no input files because of the above.
CMAKE_CXX_FLAGS must be defined as a string, not a list.
The second example, without quotes, will be interpreted as a list so each item will be separated by a semi-colon.
For example, if CMAKE_CXX_FLAGS contains the string “-c -std=c++11” and extra_flags contains ‘-O2’ :
# quotes are not specified
set (CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} ${extra_flags})
Now CMAKE_CXX_FLAGS contains “-c;-std=c++11;-O2” which not what is expected.
Whereas the ; in bash/make would mean start a new command.
Thanks.