How do you build wxWidgets samples on linux - c++

I have recently downloaded wxWidgets (installed from source but I don't think that is the problem) and I cannot figure out how to build the samples provided on linux. From what I can tell all the makefiles given are for windows machines and from the few things I have found online just say to run make in the directory but that just leaves me with a
make: *** No targets specified and no makefile found. Stop.
I have no idea how to build them. The particular samples I am trying to build can be found here:
https://github.com/wxWidgets/wxWidgets/tree/WX_3_0_BRANCH/samples/minimal
and I am using wxwidgets version: 3.0.5, Ubuntu: 20.04
,if any other information is needed please just ask
Not too sure if I'm just missing something for what, any help would be great, thanks
EDIT: I have tried to build them also using make -f makefile.gcc and get this error:
if not exist gcc_mswud mkdir gcc_mswud
make: -c: Command not found
make: [makefile.gcc:219: gcc_mswud] Error 127 (ignored)
windres --use-temp-file -i../../samples/sample.rc -ogcc_mswud\minimal_sample_rc.o --define __WXMSW__ --define _UNICODE --include-dir .\..\..\lib\gcc_lib\mswud --include-dir ./../../include --include-dir . --include-dir ./../../samples --define NOPCH
make: -c: Command not found
make: *** [makefile.gcc:234: gcc_mswud\minimal_sample_rc.o] Error 127
but from what I can gather this is because that makefile is meant for windows machines

You need to run the configure script to generate the make files for your system. There is a good article on this on the wiki. The configure script will produce make files for both the library and the samples.
On linux, this 2 step configure/make process is quite common for building libraries and programs.

Related

CMake is not found when running through make

I'm trying to build https://github.com/AlbertWerner/cryptonotecoinwallet and facing an issue.
According to the README of the repo, I can run cmake command and it completes without any errors. But then, when I run make, it gives me the below error.
$ make
make: /usr/bin/cmake: Command not found
make: *** [Makefile:5138: cmake_check_build_system] Error 127
I'm using MSYS on Windows and here are the corresponding details.
$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/opt/bin:/c/Windows/System32:/c/Windows:/c/Windows/System32/Wbem:/c/Windows/System32/WindowsPowerShell/v1.0/:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl:/mingw32/bin
$ which cmake
/mingw32/bin/cmake
Seems like it's looking for cmake in the wrong path.
Makefile
cmake_check_build_system:
$(CMAKE_COMMAND) -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0
.PHONY : cmake_check_build_system # <== Line 5139
I'm not sure what's wrong. Please help me out.
Thanks.
Make sure that you launch MSYS2 using the mingw32.exe executable at the top level of your MSYS2 installation, and that you use that environment when you first run cmake. If you ran CMake in a different environment, remove all the files it created. The commands for running cmake and building the project should be something like this, assuming the developers have set it up in a reasonable way:
mkdir build
cd build
cmake .. -G"MSYS Makefiles"
make
I didn't try this myself because I am wary of running random code from the internet, but I found this note in the CMakefile indicating that the developers do not support MSYS2:
if (WIN32)
if (NOT MSVC)
message(FATAL_ERROR "Only MSVC is supported on this platform")
endif ()
...
So you will have to spend some effort on porting the Windows-specific code in this program to GCC if you really want to do this.

gcc 4.7 on Fedora 23 with gcc 5.3.1

I need to install gcc 4.7.x on my fedora 23 in order to make Matlab compile the code. I also came across an error when I was trying to use Cuda which required gcc 4.9.x or lower.
I tried to compile gcc-4.7.4 from scratch but I get the following errors:
Makefile:4107: recipe for target 'all-stage1-gcc' failed
make[2]: *** [all-stage1-gcc] Error 2
make[2]: Leaving directory '/home/x/src/objdir'
Makefile:19334: recipe for target 'stage1-bubble' failed
make[1]: *** [stage1-bubble] Error 2
make[1]: Leaving directory '/home/x/src/objdir'
Makefile:903: recipe for target 'all' failed
make: *** [all] Error 2
I made a separate directory for configuration and building and I ran the configure as:
../gcc-4.7.4/configure --enable-languages=c,c++ --disable-multilib --prefix=$HOME/gcc-4.7.4
However I think the problem rises from the fact that I am using gcc-5.3.1 to compile gcc-4.7.4 but I have no idea how to fix it.
I noticed there is no packages available from dnf to install gcc-4.7.x either.
It looks like you put your build dir inside the source tree. Don't do that. Follow the wiki's instructions.
do not run ./configure from within the source directory, this is not supported. You need to run configure from outside the source directory, in a separate directory created for the build
It'll look something like this:
tar xzf gcc-4.7.4.tar.gz
cd gcc-4.7.4
./contrib/download_prerequisites
cd ..
mkdir objdir
cd objdir
$PWD/../gcc-4.7.4/configure --no-multilib --prefix=$HOME/gcc-4.7.4 --enable-languages=c,c++
make
make install
This question is a little dated now, but patching gcc/cp/cfns.gperf did the trick for me. See here: https://gist.github.com/joka90/bb8ef36aa755994d3b3d/. Built using gcc 5.3.1 under Fedora 23.
#Download and apply fix to be able to build gcc 4.7 with gcc 5.1
cd /path/to/build/gcc/source
wget https://patchwork.ozlabs.org/patch/504982/raw/ -O cfns-fix-mismatch-in-gnu_inline-attributes.patch
patch -p1 -i cfns-fix-mismatch-in-gnu_inline-attributes.patch

Building Mono from Source (not git) Fails with mcs: Command not found

Building mono from downloaded source on an Android device. Ran make get-monolite-latest and still get the following errors
make[2]: Entering directory `/bld/mono/mono-4.0.0/runtime'
if test -w /bld/mono/mono-4.0.0/mcs; then :; else chmod -R +w /bld/mono/mono-4.0.0/mcs; fi
cd /bld/mono/mono-4.0.0/mcs && make --no-print-directory -s NO_DIR_CHECK=1 PROFILES='binary_reference_assemblies net_4_5 xbuild_12 xbuild_14 monodroid ' CC='gcc --sysroot=/usr/gcc-4.9.2/sysroot' all-profiles
make[6]: mcs: Command not found
make[6]: *** [build/deps/basic-profile-check.exe] Error 127
*** The compiler 'mcs' doesn't appear to be usable.
*** Trying the 'monolite' directory.
Illegal instruction
make[8]: *** [build/deps/basic-profile-check.exe] Error 132
*** The contents of your 'monolite' directory may be out-of-date
*** You may want to try 'make get-monolite-latest'
I've found what I think is the mcs executable in runtime/_tmpdir/bin, but copying it to where the build seems to be looking for it doesn't help.
How do I resolve this?
As the error message suggests: You may want to try the command 'make get-monolite-latest'
You need a certain mono version for building mono 4, I think it was >= 3.8 or so. The monolite should help out in this case.

wxWidgets3.0 MinGWx32 Compilation Error 1 - Path Not Found

I'm trying to compile wxWidgets 3.0; I've downloaded the source and am using TDM-GCC (a repackaging of MinGW, as I understand it). I'm getting errors similar to the following when I try to compile the samples, and I have seen the same error when I try to compile the library:
D:\wxWidgets3.0\samples\access>mingw32-make -f makefile.gcc
windres --use-temp-file -i../../samples/sample.rc -ogcc_mswud\accesstest_sample_
rc.o --define __WXMSW__ --define _UNICODE --include-dir .\..\..\lib\gc
c_lib\mswud --include-dir ./../../include --include-dir . --include-dir ./../.
./samples --define NOPCH
The system cannot find the path specified.
windres: gcc exited with status 1
makefile.gcc:234: recipe for target 'gcc_mswud\accesstest_sample_rc.o' failed
mingw32-make: *** [gcc_mswud\accesstest_sample_rc.o] Error 1
I used Codelite's binary distribution of wxWidgets-3.0, and I'm able to compile and run the sample programs just fine, but I'd like to know what I was doing wrong; could someone point me in the right direction as to where I failed in compiling the library or the sample programs?
Thanks all!

Building Boost with ICU using MinGW

I downloaded the last ICU release (49) binaries and add the following arg to b2:
-sICU_PATH="D:\lib64\icu"
I got
gcc.link D:\boost\1.51.0\boost\boost\bin.v2\libs\locale\build\gcc-mingw-4.7.1\debug\has_icu64.exe
d:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/4.7.1/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -licui18n
d:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/4.7.1/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -licudata
collect2.exe: error: ld returned 1 exit status
There were not such libicui18n, libicudata among icu binaries.
So I tried to build it myself. I got this error
PATH=../../lib:../../stubdata:../../tools/ctestfw:$PATH ../../bin/genrb -e UTF-8 -s resources -d uconvmsg root.txt
Makefile:173: recipe for target `uconvmsg/root.res' failed
make[2]: *** [uconvmsg/root.res] Error 127
Could somebody suggest me how I should build Boost with ICU using MinGW?
1.) the libraries in the package you downloaded are named icuin49.dll, icudt49.dll. We build regularly with mingw (and many other platforms) to test, but don't post those binaries.
2.) uconv is just an extra. You can disable it with --disable-extras on the configure line. (not enough info there to tell me why it failed.)