diff --git a/cmake/modules/AddCompilerFlags.cmake b/cmake/modules/AddCompilerFlags.cmake --- a/cmake/modules/AddCompilerFlags.cmake +++ b/cmake/modules/AddCompilerFlags.cmake @@ -11,12 +11,19 @@ string(APPEND ${TEST_NAME} "_is_supported") endmacro() +macro(append_flag_to_variable TARGET_VAR FLAG) + if(NOT "${${TARGET_VAR}}" STREQUAL "") + string(APPEND ${TARGET_VAR} " ") + endif() + string(APPEND ${TARGET_VAR} "${FLAG}") +endmacro() + function(add_c_compiler_flag) foreach(f ${ARGN}) build_test_name_from_flag(FLAG_IS_SUPPORTED ${f}) CHECK_C_COMPILER_FLAG(${f} ${FLAG_IS_SUPPORTED}) if(${FLAG_IS_SUPPORTED}) - string(APPEND CMAKE_C_FLAGS " ${f}") + append_flag_to_variable(CMAKE_C_FLAGS ${f}) endif() endforeach() set(CMAKE_C_FLAGS ${CMAKE_C_FLAGS} PARENT_SCOPE) @@ -27,7 +34,7 @@ build_test_name_from_flag(FLAG_IS_SUPPORTED ${f}) CHECK_CXX_COMPILER_FLAG(${f} ${FLAG_IS_SUPPORTED}) if(${FLAG_IS_SUPPORTED}) - string(APPEND CMAKE_CXX_FLAGS " ${f}") + append_flag_to_variable(CMAKE_CXX_FLAGS ${f}) endif() endforeach() set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} PARENT_SCOPE) @@ -60,7 +67,7 @@ # (eventually with a warning). function(add_linker_flag) foreach(f ${ARGN}) - string(APPEND CMAKE_EXE_LINKER_FLAGS " ${f}") + append_flag_to_variable(CMAKE_EXE_LINKER_FLAGS ${f}) endforeach() set(CMAKE_EXE_LINKER_FLAGS ${CMAKE_EXE_LINKER_FLAGS} PARENT_SCOPE) endfunction()