How do I set up wxWidgets for Windows and CodeLite? - wxwidgets

I'm trying out a new setup. I'm on a 32-bit Windows 8 Pro laptop. I've downloaded MinGW-builds' GCC 4.8.1. I used it to compile LLVM & CLang (3.4+ from a SVN copy of the trunk). Both of those are in my PATH.
I've downloaded CodeLite 5.2, which came with a copy of MinGW/GCC 4.7.1. I got the pure console tutorial example working, but I can't get the wxWidgets example working. (It's the Quick Start.) I downloaded & installed wxWidgets. (Always a good first step.) I built it with MinGW-4.8.1. I've read the error notes and added two (first local, now system) environment variables: WXWIN at "C:\wxWidgets-2.9.5" and WXCFG at "..\build\msw\gcc_mswud". (I initially thought WXCFG would be an absolute path, but it's based off of "%WXWIN%\lib\".) I moved my MinGW and LLVM builds out of "C:\Program Files" to "C:\" to avoid having a space in their paths.
Here's the (still) error output when I build with F7:
C:\WINDOWS\system32\cmd.exe /c "mingw32-make.exe -j 2 -e -f Makefile"
"----------Building project:[ Test1_2 - Debug ]----------"
Please use the --wxcfg flag (as in wx-config --wxcfg=gcc_dll\mswud)
or set the environment variable WXCFG (as in WXCFG=gcc_dll\mswud)
to specify which configuration exactly you want to use.
Please use the --wxcfg flag (as in wx-config --wxcfg=gcc_dll\mswud)
or set the environment variable WXCFG (as in WXCFG=gcc_dll\mswud)
to specify which configuration exactly you want to use.
Please use the --wxcfg flag (as in wx-config --wxcfg=gcc_dll\mswud)
or set the environment variable WXCFG (as in WXCFG=gcc_dll\mswud)
to specify which configuration exactly you want to use.
Please use the --wxcfg flag (as in wx-config --wxcfg=gcc_dll\mswud)
or set the environment variable WXCFG (as in WXCFG=gcc_dll\mswud)
to specify which configuration exactly you want to use.
mingw32-make.exe[1]: Entering directory `C:/Users/Daryle/Documents/CodeLite/Test1/Test1_2'
g++: error: wx-config: No such file or directory
g++: error: Error:: Invalid argument
g++: error: No: No such file or directory
g++: error: valid: No such file or directory
g++: error: setup.h: No such file or directory
g++: error: of: No such file or directory
g++: error: wxWidgets: No such file or directory
g++: error: has: No such file or directory
g++: error: been: No such file or directory
g++: error: found: No such file or directory
g++: error: at: No such file or directory
g++: error: location:: Invalid argument
g++: error: C:\wxWidgets-2.9.5\lib\..\build\msw\gcc_mswud\wx\setup.h: No such file or directory
g++: error: wx-config: No such file or directory
g++: error: Error:: Invalid argument
g++: error: No: No such file or directory
g++: error: valid: No such file or directory
g++: error: setup.h: No such file or directory
g++: error: of: No such file or directory
g++: error: wxWidgets: No such file or directory
g++: error: has: No such file or directory
g++: error: been: No such file or directory
g++: error: found: No such file or directory
g++: error: at: No such file or directory
g++: error: location:: Invalid argument
g++: error: C:\wxWidgets-2.9.5\lib\..\build\msw\gcc_mswud\wx\setup.h: No such file or directory
mingw32-make.exe[1]: *** [Debug/test1_2_frame.o.d] Error 1
mingw32-make.exe[1]: *** Waiting for unfinished jobs....
mingw32-make.exe[1]: *** [Debug/test1_2_app.o.d] Error 1
Test1_2.mk:102: recipe for target `Debug/test1_2_frame.o.d' failed
Test1_2.mk:94: recipe for target `Debug/test1_2_app.o.d' failed
mingw32-make.exe[1]: Leaving directory `C:/Users/Daryle/Documents/CodeLite/Test1/Test1_2'
mingw32-make.exe: *** [All] Error 2
Makefile:4: recipe for target `All' failed
0 errors, 0 warnings
At some point, a compiler step spewed out an error message and the next step interpreted it as actual parameters! (Should have sent the error on stderr instead of stdout?)
Update
After moving on to my actual work, I got errors and noticed that CodeLite is still using the MinGW 4.7.1 that came with the CodeLite download instead of using the 4.8.1 I downloaded. I probably messed things up by changing the search directories to my 4.8.1. I think I'm going to erase everything and start over....

wx-config.exe tool for Windows uses 2 environment variables:
WXCFG and WXWIN
You need to provide them so wx-config.exe will be able to locate wx-config files.
The recommended way is to set them within the IDE and not system wide.
To do this, from within the main menu, go to:
Settings -> Environment Variables
and add 2 entries:
WXWIN=\Path\to\wxWidgets\Folder
WXCFG=gcc_dll\mswu
Also, you mentioned that codelite is using GCC4.7.1 and not your 4.8.1. You should know that when working with GCC on Windows you should have all your components built with the same GCC version. so make sure that you don't use wxWidgets that we (codelite team) provide
since it was built with GCC4.7.1 or you might get some weird crashes.
To force codelite to use another GCC, simply alter the PATH from within codelite:
Settings -> Environment variables
PATH=\Path\To\MinGW-4.8.1\bin;$PATH
Eran

The error message seems to indicate that WXCFG environment variable is not set, did you relaunch the IDE after setting it? Remember that editing environment variables doesn't change them for the already running processes.

Related

Building C++ Pybind11 extension with setuptools and CMake generates .so directory

I am trying to use setuptools to install a C++ library with a Pybind11 interface using CMake. For using CMake with setuptools, I am using the code in the following answer: Extending setuptools extension to use CMake in setup.py?
I am able to build the library by hand with cmake.
Unfortunately however, when executing pip install . in the root directory of my project, the build fails.
While the first call to cmake (self.spawn(['cmake', str(cwd)] + cmake_args)) finishes without any error, executing the second call (self.spawn(['cmake', '--build', '.'] + build_args)) gives me the following error:
/users/thoerman/miniconda3/envs/postproc_np_products/bin/../lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/../../../../x86_64-conda_cos6-linux-gnu/bin/ld: cannot open output file /users/thoerman/postproc_np_products/build/lib.linux-x86_64-cpython-37/postproc_ops_cpp.cpython-37m-x86_64-linux-gnu.so: Is a directory
collect2: error: ld returned 1 exit status
gmake[3]: *** [/users/thoerman/postproc_np_products/build/lib.linux-x86_64-cpython-37/postproc_ops_cpp.cpython-37m-x86_64-linux-gnu.so] Error 1
gmake[2]: *** [CMakeFiles/postproc_ops_cpp.dir/all] Error 2
gmake[1]: *** [CMakeFiles/postproc_ops_cpp.dir/rule] Error 2
gmake: *** [postproc_ops_cpp] Error 2
But when running the exact same commands on the command line inside the build_temp directory, everything works just fine.
Does anyone have a hint for me, what might be going wrong?
After further digging into the problem, I found the solution myself.
The problem was with the lines
extdir = pathlib.Path(self.get_ext_fullpath(ext.name))
extdir.mkdir(parents=True, exist_ok=True)
This created a directory for the target to be built. Building the target then failed, since there was already a directory with the same name.
I was able to solve it by replacing the second line as follows:
extdir.parent.mkdir(parents=True, exist_ok=True)

Why does the CMake command show "The source directory "/home/shubham" does not appear to contain CMakeLists.txt."?

I am installing libfreenect2 on Linux.
I am following the steps given in https://github.com/OpenKinect/libfreenect2.
Command
cmake .. -DCMAKE_INSTALL_PREFIX=$HOME/freenect2"
gives me an error:
"CMake Error: The source directory "/home/shubham" does not appear to contain CMakeLists.txt.
When I searched for "CMakeLists.txt" file, it is in the libfreenect2 folder.

No such file or directory -- Building an RPM with CPACK using custom spec file

I'm trying to build an RPM with CPACK using my own .spec file. In following the tutorial from here.
I'm getting an error when building the RPM:
No such file or directory
It has to do with the Source0 line in the .spec file
I've got this in my CMakeLists.txt file:
CONFIGURE_FILE("${CMAKE_CURRENT_SOURCE_DIR}/my_project.spec.in" "${CMAKE_CURRENT_BINARY_DIR}/my_project.spec" #ONLY IMMEDIATE)
SET(CPACK_RPM_USER_BINARY_SPECFILE "${CMAKE_CURRENT_BINARY_DIR}/my_project.spec")
SET(CPACK_PACKAGE_RELEASE 2)
INCLUDE(CPack)
This works and generates a .spec file. In my .spec.in file, it's got:
Buildroot: #CMAKE_CURRENT_BINARY_DIR#/_CPack_Packages/Linux/RPM/#CPACK_PACKAGE_FILE_NAME#
Name: #CPACK_PACKAGE_NAME#
Version: #CPACK_PACKAGE_VERSION#
Release: #CPACK_PACKAGE_RELEASE#%{dist}
Summary: Blah blah
Vendor: #CPACK_PACKAGE_VENDOR#
License: MIT
Source0: https://github.com/me/%{name}/archive/%{version}.tar.gz
BuildRequires: gcc, make, cmake
BuildRequires: doxygen, graphviz, doxygen-latex
%description
<SNIPPED>
Then I get rhe error
CPackRPM:Debug: *** error: File /home/me/projects/my_project/build/_CPack_Packages/Linux/RPM/SOURCES/1.0.0.0.tar.gz: No such file or directory
That error is due to the Source0 line I imagine.
If I do this instead, I get a little different error:
CPackRPM:Debug: *** error: File /home/me/projects/my_project/build/_CPack_Packages/Linux/RPM/SOURCES/my_project: No such file or directory
And somewhat related, this doesn't seem to generate an SRPM either. I need one of those to submit to Fedora for inclusion in package db.

Can't find jemalloc while building MariaDB on Raspbian Wheezy

I have installed the list of Required tools shown on the Build Environment Setup for Linux, including JEMALLOC, on my Raspberry Pi which has Raspbian Wheezy installed, fully updated, and setup for development. I have successfully built some of the listed tools (Bison, CMake 3.7.2). I have gcc and g++ (Raspbian 4.8.2-21rpi3rpi1) 4.8.2.
When I attempt to build mariadb 10.1.22 (master branch from the github repository) using cmake . -DBUILD_CONFIG=mysql_release I get an error:
CMake Error at cmake/jemalloc.cmake:38 (MESSAGE):
jemalloc is not found
Call Stack (most recent call first):
CMakeLists.txt:343 (CHECK_JEMALLOC)
After building JEMALLOC, I installed it into /usr/local using sudo make install. I have export JEMALLOC_PATH=/usr/local in my .bashrc.
I don't understand why CHECK_JEMALLOC is failing to find the correct files. A list of the file locations is:
/usr/local/bin/jemalloc.sh
/usr/local/bin/jemalloc-config
/usr/local/include/jemalloc
/usr/local/include/jemalloc/jemalloc.h
/usr/local/lib/pkgconfig/jemalloc.pc
/usr/local/lib/libjemalloc.so
/usr/local/lib/libjemalloc_pic.a
/usr/local/lib/libjemalloc.so.2
/usr/local/lib/libjemalloc.a
/usr/local/share/doc/jemalloc
/usr/local/share/doc/jemalloc/jemalloc.html
/usr/local/share/man/man3/jemalloc.3
I can attach a link to the CMake configure log, error log, and terminal output if needed.
UPDATE
I tried using just cmake . and the configuration part worked, but the make failed with the following error:
/home/user/Downloads/mariadb/server/storage/mroonga/vendor/groonga/lib/expr.c:6816:7: note: in expansion of macro ‘GRN_PTR_POP’
GRN_PTR_POP(&keywords, keyword);
^
cc: internal compiler error: Killed (program cc1)
Please submit a full bug report,
with preprocessed source if appropriate.
See <file:///usr/share/doc/gcc-4.8/README.Bugs> for instructions.
storage/mroonga/vendor/groonga/lib/CMakeFiles/libgroonga.dir/build.make:257: recipe for target 'storage/mroonga/vendor/groonga/lib/CMakeFiles/libgroonga.dir/expr.c.o' failed
make[2]: *** [storage/mroonga/vendor/groonga/lib/CMakeFiles/libgroonga.dir/expr.c.o] Error 4
make[2]: Leaving directory '/home/user/Downloads/mariadb/server'
CMakeFiles/Makefile2:4420: recipe for target 'storage/mroonga/vendor/groonga/lib/CMakeFiles/libgroonga.dir/all' failed
make[1]: *** [storage/mroonga/vendor/groonga/lib/CMakeFiles/libgroonga.dir/all] Error 2
make[1]: Leaving directory '/home/user/Downloads/mariadb/server'
Makefile:152: recipe for target 'all' failed
make: *** [all] Error 2

g++.exe: #letstr.txt: No such file or directory g++.exe: no input files -first try-

as you know that i'm really a beginner for CodeLite and MinGW, and i don't have any idea how it's works. When i try to build the project, the output said that it's error and i don't know what should i do. I'm using Windows 10.
i simply just follow the steps based on this video for the first try. https://www.youtube.com/watch?v=LGGHxaDxSK4
when i want to apply for some installation, the bar always show up like this
http://sta.sh/015gez4rfjn0
i even try to mark mingw32-gcc-g++
let me show you my output
C:\Windows\system32\cmd.exe /C C:/MinGW/bin/mingw32-make.exe -j4 SHELL=cmd.exe -e -f Makefile
"----------Building project:[ letstr - Debug ]----------"
mingw32-make.exe[1]: Entering directory 'C:/Users/asu/Documents/letstry/letstr'
C:/MinGW/bin/g++.exe -o ./Debug/letstr #"letstr.txt" -L.
g++.exe: #letstr.txt: No such file or directory
g++.exe: no input files
mingw32-make.exe[1]: *** [Debug/letstr] Error 1
letstr.mk:78: recipe for target 'Debug/letstr' failed
mingw32-make.exe[1]: Leaving directory 'C:/Users/asu/Documents/letstry/letstr'
Makefile:4: recipe for target 'All' failed
mingw32-make.exe: *** [All] Error 2
====1 errors, 0 warnings====
g++.exe: #letstr.txt: No such file or directory
i think your destination file incorrect. if you create C program it must be named with .c extension instead of .txt.