← Back to team overview

kicad-developers team mailing list archive

cmake errors wxWidgets

 

I'll try again to find someone who understands the ins and out of cmake enough to steer me to some solution that make sense. Below you will see what happens on Fedora always with kicad cmake and wxWidgets.

Notice that I am telling cmake exactly how to run my wx-config script. In fact, I have that path on my path.

 wx-config --libs
-L/home/jfm/wx-302/lib -pthread -lwx_gtk2u_xrc-3.0 -lwx_gtk2u_html-3.0 -lwx_gtk2u_qa-3.0 -lwx_gtk2u_adv-3.0 -lwx_gtk2u_core-3.0 -lwx_baseu_xml-3.0 -lwx_baseu_net-3.0 -lwx_baseu-3.0

I suppose it is too hard for cmake to simply use the results of wx-config --libs, not convert it to some semi-colon list that won't work on Linux in any case. But cmake doesn't do that, instead it insists on using the system wxWidgets version, even if it doesn't exist. I did indeed remove the system wxWidgets and all the programs that use it. Did that change anything. Yes, it changed the error message because blank was compared to wxWidgets 3.0.0 and found wanting.


So, 1) having wx-config on my PATH has no effect on the result; it fails.

2) removing the system wxWidgets (and all the programs that depend on it) has no effect on the result; it fails the same way. 3) The the cmake log file doesn't contain any information about wxWidgets at all.

I have hacked the cmake files to make this work on Fedora 19, and Fedora20, and succeeded but it is nothing I would document for any others using Fedora.

The problem is that stuff it finds is more or less correct but it isn't in the right cmake variable for it to use it.

That is, the cmake code that executes simply does the wrong thing on Linux, at least Fedora Linux.

Now, I can hack this into working again, but that would be pushing this issue under the carpet again. What needs to happen is that when the cmake flag -DwxWidgets_CONFIG_EXECUTABLE is encountered it uses the result of wx-config --libs directly and skips the system check completely, unless of course these libs really are the wrong version of wxWidgets , which in my case is not the case.

Here is  example of the  error in all its glory.

cmake -DKICAD_SCRIPTING=ON -DKICAD_SCRIPTING_MODULES=ON -DUSE_FP_LIB_TABLE=HARD_CODED_ON -DBUILD_GITHUB_PLUGIN=ON -DPYTHON_DEST=/home/jfm/sitepkgs -DCMAKE_INSTALL_PREFIX=/home/jfm/kicad -DwxWidgets_CONFIG_EXECUTABLE=/home/jfm/wx-302/bin/wx-config

CMake Error at CMakeModules/FindPackageHandleStandardArgs.cmake:131 (include):

include could not find load file:


Call Stack (most recent call first):

CMakeModules/FindwxWidgets.cmake:928 (include)

CMakeLists.txt:444 (find_package)



CMake Error at CMakeModules/FindPackageHandleStandardArgs.cmake:136 (message):

Could NOT find wxWidgets: Found unsuitable version "2.8.12", but required

is at least "3.0.0" (found

-L/home/jfm/wx-302/lib;-pthread;;;-lwx_gtk2u_gl-3.0;-lwx_gtk2u_aui-3.0;-lwx_gtk2u_adv-3.0;-lwx_gtk2u_html-3.0;-lwx_gtk2u_core-3.0;-lwx_baseu_net-3.0;-lwx_baseu-3.0;-lwx_baseu_xml-3.0;-lwx_gtk2u_stc-3.0)

Call Stack (most recent call first):

CMakeModules/FindPackageHandleStandardArgs.cmake:341 (_FPHSA_FAILURE_MESSAGE)

CMakeModules/FindwxWidgets.cmake:930 (find_package_handle_standard_args)

CMakeLists.txt:444 (find_package)



-- Configuring incomplete, errors occurred!


One more question for those who know. I seem to recall that when building wxWidgets it is important to use additional flags so that gal will be happy. I don't remember the libs involved but I seem to recall that there were two libs needed.


Follow ups