From 38c38e2274af694b5de0598a20ca69eca5e049a5 Mon Sep 17 00:00:00 2001 From: Maarten Bent Date: Wed, 27 Nov 2019 20:40:11 +0100 Subject: [PATCH] CMake: private includes before public includes This way, build-in headers (for example png headers) will always be included before system headers. --- build/cmake/functions.cmake | 8 ++++++-- build/cmake/lib/CMakeLists.txt | 6 +++++- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/build/cmake/functions.cmake b/build/cmake/functions.cmake index 7d772546da..fa412910e0 100644 --- a/build/cmake/functions.cmake +++ b/build/cmake/functions.cmake @@ -405,14 +405,18 @@ endmacro() # Forwards everything to target_include_directories() except for monolithic # build where it collects all include paths for linking with the mono lib macro(wx_lib_include_directories name) + cmake_parse_arguments(_LIB_INCLUDE_DIRS "" "" "PUBLIC;PRIVATE" ${ARGN}) if(wxBUILD_MONOLITHIC) - cmake_parse_arguments(_LIB_INCLUDE_DIRS "" "" "PUBLIC;PRIVATE" ${ARGN}) list(APPEND wxMONO_INCLUDE_DIRS_PUBLIC ${_LIB_INCLUDE_DIRS_PUBLIC}) list(APPEND wxMONO_INCLUDE_DIRS_PRIVATE ${_LIB_INCLUDE_DIRS_PRIVATE}) set(wxMONO_INCLUDE_DIRS_PUBLIC ${wxMONO_INCLUDE_DIRS_PUBLIC} PARENT_SCOPE) set(wxMONO_INCLUDE_DIRS_PRIVATE ${wxMONO_INCLUDE_DIRS_PRIVATE} PARENT_SCOPE) else() - target_include_directories(${name};BEFORE;${ARGN}) + set(INCLUDE_POS) + if (_LIB_INCLUDE_DIRS_PRIVATE) + set(INCLUDE_POS BEFORE) + endif() + target_include_directories(${name};${INCLUDE_POS};${ARGN}) endif() endmacro() diff --git a/build/cmake/lib/CMakeLists.txt b/build/cmake/lib/CMakeLists.txt index 1a625e54ae..939eba57d3 100644 --- a/build/cmake/lib/CMakeLists.txt +++ b/build/cmake/lib/CMakeLists.txt @@ -86,7 +86,11 @@ if(wxBUILD_MONOLITHIC) target_link_libraries(mono ${vis} ${wxMONO_LIBS_${vis}}) endif() if(wxMONO_INCLUDE_DIRS_${vis}) - target_include_directories(mono ${vis} ${wxMONO_INCLUDE_DIRS_${vis}}) + set(INCLUDE_POS) + if (vis STREQUAL PRIVATE) + set(INCLUDE_POS BEFORE) + endif() + target_include_directories(mono ${INCLUDE_POS} ${vis} ${wxMONO_INCLUDE_DIRS_${vis}}) endif() if(wxMONO_DEFINITIONS_${vis}) target_compile_definitions(mono ${vis} ${wxMONO_DEFINITIONS_${vis}})