[CMake] Problem with include directory ordering in wxWidgets_INCLUDE_DIRS

Roger James roger at beardandsandals.co.uk
Sat Aug 14 07:23:01 EDT 2010


I have added this to the bug database myself.

Roger

On 10/08/2010 21:58, Roger James wrote:
> Please can someone with access to the bug database raise this as a 
> problem.
>
> The CMake module FindwxWidgets.cmake sets up an a variable called  
> wxWidgets_INCLUDE_DIRS which is intended to be used as the source of 
> additional include directories to be searched by various build tools. 
> The code that sets this up looks like this.
>
>         # Set wxWidgets main include directory.
>         IF(EXISTS ${WX_ROOT_DIR}/include/wx/wx.h)
>           SET(wxWidgets_INCLUDE_DIRS ${WX_ROOT_DIR}/include)
>         ELSE(EXISTS ${WX_ROOT_DIR}/include/wx/wx.h)
>           DBG_MSG("wxWidgets_FOUND FALSE because 
> WX_ROOT_DIR=${WX_ROOT_DIR} has no ${WX_ROOT_DIR}/include/wx/wx.h")
>           SET(wxWidgets_FOUND FALSE)
>         ENDIF(EXISTS ${WX_ROOT_DIR}/include/wx/wx.h)
>
>         # Set wxWidgets lib setup include directory.
>         IF(EXISTS ${WX_LIB_DIR}/${wxWidgets_CONFIGURATION}/wx/setup.h)
>           LIST(APPEND wxWidgets_INCLUDE_DIRS
>             ${WX_LIB_DIR}/${wxWidgets_CONFIGURATION})
>         ELSE(EXISTS ${WX_LIB_DIR}/${wxWidgets_CONFIGURATION}/wx/setup.h)
>           DBG_MSG("WXWIDGET_FOUND FALSE because 
> ${WX_LIB_DIR}/${wxWidgets_CONFIGURATION}/wx/setup.h does not exists.")
>           SET(wxWidgets_FOUND FALSE)
>         ENDIF(EXISTS ${WX_LIB_DIR}/${wxWidgets_CONFIGURATION}/wx/setup.h)
>
> This results in the configuration specific (unicode/non-unicode) 
> include directories being placed after the generic include directory 
> in the list. This needs to be the other way round and can cause 
> "duplicate manifest resource" problems when linking applications on 
> windows visual studio platforms. This is caused by the fact that the 
> file "rcdefs.h" exists in both the configuration specific include dir 
> and in the generic include dir. However the version of rcdefs.h in the 
> generic include dir is only intended to be used if configuration 
> specific ones are not found.
>
> The gory details are that the generic rcdefs.h does not contain a 
> definition for WX_MSC_FULL_VER which is used to stop wxWidgets trying 
> to link in its own manifest resource when newer versions of the of the 
> Microsoft Compiler that provide their own manifests are being used.
>
> I suggest that the two pieces of CMake code are swapped round and the 
> SET and LIST commands modified as appropriate.
>
> Having the include dirs in the current order may well cause other 
> obscure problems as well.
>
> Cheers,
>
> Roger
>
> _______________________________________________
> Powered by www.kitware.com
>
> Visit other Kitware open-source projects at 
> http://www.kitware.com/opensource/opensource.html
>
> Please keep messages on-topic and check the CMake FAQ at: 
> http://www.cmake.org/Wiki/CMake_FAQ
>
> Follow this link to subscribe/unsubscribe:
> http://www.cmake.org/mailman/listinfo/cmake
>



More information about the CMake mailing list