[CMake] FindxxWidgets.cmake: wrong wxWidgets_INCLUDE_DIRS on UNIX

Florent Teichteil florent.teichteil at gmail.com
Thu Jul 2 11:26:35 EDT 2009


Tyler Roscoe a écrit :
> On Wed, Jul 01, 2009 at 07:23:27PM +0200, Florent Teichteil wrote:
>> // BEGINNING OF CMakeLists.txt
>>
>> set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR})
>> find_package(wxWidgets COMPONENTS base core REQUIRED)
>> include_directories(${wxWidgets_INCLUDE_DIRS})
>> add_definitions(${wxWidgets_DEFINITIONS})
>> message(STATUS ${wxWidgets_INCLUDE_DIRS})
>>
>> // END OF CMakeLists.txt
>>
>> When I run "cmake ." in a terminal window, I get the following output:
> 
> Don't do in-source builds, for they lead to suffering. Check the FAQ for
> details.
> 
>> -- /usr/lib/wx/include/gtk2-unicode-release-2.8/usr/include/wx-2.8
>> -- Configuring done
>> -- Generating done
>>
>> The first line gives the value of "wxWidgets_INCLUDE_DIRS" which is 
>> obviously wrong. It seems 2 paths have been concatenated without white 
>> space. I think it should be something like 
>> "/usr/lib/wx/include/gtk2-unicode-release-2.8 /usr/include/wx-2.8".
> 
> Try message(STATUS "${wxWidgets_INCLUDE_DIRS}"). My guess is that
> variable is a list and the way you are using it in message() is
> flattening that list.
> 

I've just found the error I made. I defined another CMakeLists.txt file 
in a sub-directory containing the source code. Unfortunately, I declared 
it in the root CMakeLists.txt file (using the command add_subdirectory) 
after the wxwidgets macros, because I thought that it would be processed 
after the main file. But this is not the case: it seems the 
add_subdirectory command immediately processes the sub-directory's 
CMakeLists.txt file, so that the wxwidgets include paths were not 
defined in the sub-directory's generated Makefile.

Thank you all very much for your help,
Florent


More information about the CMake mailing list