I installed Code::Blocks from svn 11562 and wxWidgets version 3.0.3 from source according to the instructions at http://wiki.codeblocks.org/index.php/Installing_Code::Blocks_from_source_on_Linux (http://wiki.codeblocks.org/index.php/Installing_Code::Blocks_from_source_on_Linux)
In Code::Blocks Help => About I see verification that wxWidgets is installed.
After installing Code::Blocks I installed Valgrind and wxSmith with the commands:
sudo apt-get install codeblocks-contrib
sudo apt-get install valgrind
I do not see Valgrind in the Code::Blocks's menu bar. And when I attempt to create a wxWidgets frame based project with wxSmith Preferred GUI Builder I get the error message
wxSmith is not loaded, can not continue
Why would Code::Blocks not recognize that codeblocks-contrib and valgrind are installed?
When I executed the command:
./configure --with-contrib-plugins=all
I got the error:
checking for HUNSPELL... no
configure: error: Package requirements (hunspell) were not met:
No package 'hunspell' found
I do have a repository installation of hunspell. Now I will have to compile hunspell. How is this done in a way that configure will find it? Would it be sufficient to compile it in a subdirectory of the same ~/devel directory I compiled wxWidgets and Code::Blocks in? (wxWidgets and Code::Blocks were each compiled their own subdirectories of ~/devel).
I attempted to ignore this error regarding hunspell and continued to compile with the make command. I got this warning and error:
configmanager-revision.cpp:15:25: warning: ../../src/include/sdk_precomp.h.gch: not used because `WXUSINGDLL' not defined [-Winvalid-pch]
#include "sdk_precomp.h"
^
In file included from ../../src/include/sdk_precomp.h:13:0,
from configmanager-revision.cpp:15:
../../src/include/sdk_common.h:37:10: fatal error: wx/wxprec.h: No such file or directory
#include <wx/wxprec.h>
^~~~~~~~~~~~~
compilation terminated.
The file wxprec.h does exist in the path:
/opt/wx/3.0/include/wx-3.0/wx/wxprec.h
How can I get make to find it there?
configure failed, your source tree is in an undefined state, everything can happen from finding the Holy Grail to starting World War 3, but very unlikely make will do anything useful.
To compile against your system packages you always need to install their dev packages, nothing installs these automatically, you always have to do it yourself.
I never had to compile anything extra for CodeBlocks except wxWidgets. The configure script also has a help switch, its output especially lists the available plugins, if you dont want them all, you can specify only the ones you need.
I usually compile CodeBlocks like this (the excluded plugin requires boost that i dont want to install system wide to prevent problems with my various private ones):
./configure --with-contrib-plugins=all,-NassiShneiderman
I executed these commands:
sudo apt-get install libgamin-dev
sudo apt-get install libhunspell-dev
after which the command:
./configure --with-contrib-plugins=all
completed without error. Thanks :)
However when I attempted to compile with the make command I still got the "wx/wxprec.h: No such file or directory" error. I tried again after executing:
./configure --with-contrib-plugins=all,-NassiShneiderman
and got the same result.
Do you have libwxgtk3.0-dev installed? Try
sudo apt-get install libwxgtk3.0-dev
Ubuntu 18.04
~/devel/trunk$ wx-config --libs
-L/usr/local/lib -pthread /usr/local/lib/libwx_gtk2u_xrc-3.0.a /usr/local/lib/libwx_gtk2u_qa-3.0.a /usr/local/lib/libwx_baseu_net-3.0.a /usr/local/lib/libwx_gtk2u_html-3.0.a /usr/local/lib/libwx_gtk2u_adv-3.0.a /usr/local/lib/libwx_gtk2u_core-3.0.a /usr/local/lib/libwx_baseu_xml-3.0.a /usr/local/lib/libwx_baseu-3.0.a -lgthread-2.0 -pthread -lX11 -lXxf86vm -lSM -lgtk-x11-2.0 -lgdk-x11-2.0 -lpangocairo-1.0 -latk-1.0 -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lpangoft2-1.0 -lpango-1.0 -lgobject-2.0 -lglib-2.0 -lfontconfig -lfreetype -lpng -lexpat -lwxregexu-3.0 -lwxtiff-3.0 -lwxjpeg-3.0 -lz -ldl -lm
~/devel/trunk$ wx-config --cflags
-I/usr/local/lib/wx/include/gtk2-unicode-static-3.0 -I/usr/local/include/wx-3.0 -D_FILE_OFFSET_BITS=64 -D__WXGTK__ -pthread
It is a local built version.
~/devel/trunk$ wx-config --list
Default config is gtk2-unicode-static-3.0
Default config will be used for output
Alternate matches:
gtk3-unicode-static-3.0
I thought it was the shared version until now. I followed the instructions at:
http://wiki.codeblocks.org/index.php/Installing_Code::Blocks_from_source_on_Linux
to install wxWidgets. The source file was expanded from wxWidgets-3.0.3.tar.bz2
This is the essential command sequence I used on source files expanded from that:
../configure --prefix=/opt/wx/3.0 \
--enable-xrc \
--enable-monolithic \
--enable-unicode
make
sudo make install
What need I do different to make it shared?
If you did this
./configure --prefix=/opt/wx/3.0
but get this
~/devel/trunk$ wx-config --libs
-L/usr/local/lib -pthread /usr/local/lib/libwx_gtk2u_xrc-3.0.a /usr/local/lib/libwx_gtk2u_qa-3.0.a /usr/local/lib/libwx_baseu_net-3.0.a /usr/local/lib/libwx_gtk2u_html-3.0.a /usr/local/lib/libwx_gtk2u_adv-3.0.a /usr/local/lib/libwx_gtk2u_core-3.0.a /usr/local/lib/libwx_baseu_xml-3.0.a /usr/local/lib/libwx_baseu-3.0.a -lgthread-2.0 -pthread -lX11 -lXxf86vm -lSM -lgtk-x11-2.0 -lgdk-x11-2.0 -lpangocairo-1.0 -latk-1.0 -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lpangoft2-1.0 -lpango-1.0 -lgobject-2.0 -lglib-2.0 -lfontconfig -lfreetype -lpng -lexpat -lwxregexu-3.0 -lwxtiff-3.0 -lwxjpeg-3.0 -lz -ldl -lm
~/devel/trunk$ wx-config --cflags
-I/usr/local/lib/wx/include/gtk2-unicode-static-3.0 -I/usr/local/include/wx-3.0 -D_FILE_OFFSET_BITS=64 -D__WXGTK__ -pthread
then something is severely wrong, because all your stuff should be in /opt/wx/3.0 and not in /usr/local.
Now that you also have also libwxgtk3.0-dev installed, you have at least two wx-config config scripts!
For starters, what does
say? And then you need to check what your /usr/local and /opt/wx/3.0 do really contain.
I removed libwxgtk3.0-dev.
Something is indeed wrong. I did set the prefix to "/opt/wx/3.0". But after making wxWidgets I get:
The prefix ends up being /usr instead. What might have gone wrong here? The configure command I used is:
../configure --prefix=/opt/wx/3.0 --enable-xrc --enable-monolithic --enable-unicode --with-opengl
wx-config --prefix
According to:
https://wiki.wxwidgets.org/Compiling_and_getting_started (https://wiki.wxwidgets.org/Compiling_and_getting_started)
The shared library is default.
I did a search for all files named 'wx-config" and found several of them. These were:
/etc/alternatives/wx-config
/home/stephen/.local/share/Trash/files/wx-config
/home/stephen/devel/wxWidgets-3.0.3/build_gtk3_shared_monolithic_unicode/wx-config
/var/lib/dpkg/alternatives/wx-config
/usr/bin/wx-config
/usr/local/bin/wx-config
/opt/wx/3.0/bin/wx-config
"/etc/alternatives/wx-config" was a broken link. I removed it.
"which wx-config" returned "/usr/bin/wx-config", which is the wrong prefix, and which is the reason for the difficulty. I removed it.
The script:
/home/stephen/devel/wxWidgets-3.0.3/build_gtk3_shared_monolithic_unicode/wx-config
returned the prefix equivalent "~/devel/wxWidgets-3.0.3" which is the directory I built wxWidgets in. I am not sure if this should be deleted so I left it there.
All others returned the wrong prefixes so I deleted them. These ones I removed were likely left over from binary installs of wxWidgets.
In the Instructions at: http://wiki.codeblocks.org/index.php/Installing_Code::Blocks_from_source_on_Linux (http://wiki.codeblocks.org/index.php/Installing_Code::Blocks_from_source_on_Linux)
there is instruction to execute this command (altered for my circumstance):
export PATH=/opt/wx/3.0/bin/:$PATH
This changes the path only temporarily. To make the path survive relog I had prepended the prefix to the path I in the file: /etc/environment so I would not have to do this everytime I run Code::Blocks after a rerun.
The wxWidgets is successful now. And so is the Code::Blocks compile. But when I run Code::Blocks I get the error:
codeblocks: error while loading shared libraries: libcodeblocks.so.0: cannot open shared object file: No such file or directory
The file libcodeblocks.so.0 does exist in the path:
/usr/local/lib/libcodeblocks.so.0
Code::Blocks cannot find it. I would appreciate any suggestions regarding what to do about it.
Rignt now this is the system path:
$ echo $PATH
/opt/wx/3.0/bin/:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin