I am building a solution with CMake that uses wxWidgets. I have downloaded the source code for 3.1.0 and compiled it without issue. However, there are three libraries that my solution needs that are not in 3.1.0: dbgrid, mono, and odbc. I tried compiling 3.0.2, but VStudio 2015 will not compile the source code because it is outdated. I tried building 3.0.2 with GCC, but the Makefile was not recognized.
Any thoughts/suggestions on how I can build or find these three libraries, or build wxWidgets 3.0.2?
Thank you.
You should use the components with the same version known to work with your "solution". For example, use the same wxWidgets version that worked without issues.
On a more detailed note, ODBC component, including dbgrid, have been removed from anything later than wxWidgets 2.8; I have no idea what "mono" is but it doesn't sound like anything in wxWidgets. So going with any 3.x version is not going to help you. You might need to dig up version 2.8.12 from somewhere.
Also, for the sake of completeness, I have no idea what "the Makefile was not recognized" means, but GCC is a pretty reliable way of building wxWidgets, regardless the version of either of the two or the flavour of the former.
Related
I have recently migrated my project from wxWidgets 2.8.12 to 3.0.2. I am using Eclipse as my IDE under Windows 7 OS. The GCC version is 4.6.2.
I have successfully compiled debug and release versions of wxWidgets 3.0.2 and integrated to Eclipse. I compiled my project and I got the error in features.h file saying missing ")". When I read the purpose of features.h, to my understanding it was meant for compatibility with previous versions of wxWidgets so I have deleted everything in features.h and then compiled my project and now it compiles with no errors and everything in my project functions fine when I run the binary.
By the way, I had the same problem with TDM compilers as well. I have also rebuild the index of Eclipse in case there were remnants from wxWidgets 2.8.12 which could confuse the compiler but the problem with features.h remained there until I deleted everything in features.h.
My question is: By deleting the features.h, am I going to run into a problem in the future or will wxWidgets function normally?
Best regards,
Don't do that.
Find out where the real problem lies. There are a lot of people that successfully build wxW with gcc.
The best and easiest test is to build wxW, then build 'minimal' sample. Any error when doing that?
features.h is there for a purpose; by deleting its contents, the symbols there may become wrongly [un-]defined. Further more, if you have deleted contents of features.h after you had compiled wxW but before compiling your project, then that is a completely wrong build.
After an upgrade to the new Haskell Platform, my existing wxHaskell programs are broken.
They all seem to now require wxWidgets 2.9, for which I can't find any binary versions.
wxPack has 2.8, and beyond that one has to get a compiler and build it locally from what I see.
There are tutorials on this from various sources, each a few pages long, with various advice on setup, changing configurations, etc. Install wxConfig, install minGW compilers, setup configurations, rebuild, etc.
Is there any source of a simple binary install? I'd hope for some simple apt-get or cabal like tool, Haskell library tools (on Windows?) seem less integrated than others that I'm familiar with.
(Update) I did install and compile wxWidgets locally, and still cannot get the wxHaskell components to install. I'm sure that all of this just requires some fairly simple details, but again after some time already, hope not to have to spend a lot more time on this, and wish it was more automated!
Configuring wxc-0.90.0.3...
Configuring wxc to build against wxWidgets 2.9
setup.exe: Missing dependencies on foreign libraries:
* Missing C libraries: wxmsw29ud_all, wxtiffd, wxjpegd, wxpngd, wxzlibd,
wxregexud, wxexpatd, wxregexud
This problem can usually be solved by installing the system packages that
provide these libraries (you may need the "-dev" versions). If the libraries
are already installed but in a non-standard location then you can use the
flags --extra-include-dirs= and --extra-lib-dirs= to specify where they are.
cabal: Error: some packages failed to install:
wx-0.90.0.1 depends on wxc-0.90.0.3 which failed to install.
wxc-0.90.0.3 failed during the configure step. The exception was: ExitFailure 1
wxcore-0.90.0.1 depends on wxc-0.90.0.3 which failed to install.
Yes, you can. CodeLite (C++ IDE I use) was recently upgraded to use wx29.
Since there are no binaries yet on repo, Dave set up some. Find all instruction in CodeLite's wiki below
wxWidgets 2.9 Packages and Repositories
If you are using windows Just go to download page for Codelite and download codelite with wxWidgets. Install it, copy the installed wxWidgets directory wherever it is needed!
Also it seems like there are official binaries. I have never tested download anything there so try yourself. The link is this one
Feel free to ask any question
I have compiled shared libraries dynamically linked against libstdc++.so using GLIBCXX_3.4.11. I want to send my code to someone whose stdc++ library is only of version 3.4.10. Rather than ask him to update his library version (this is a software customer, so I can't assume they'll be willing or able to change system files) I would like to ship the appropriate version of libstdc++.so, placed in a lib folder with the directory location of my code. How do I get my own code to use the appropriate (later) version? I find that /etc/ld.so.conf includes the directory /lib64, where an offending older version of libstdc++.so resides. Setting LD_LIBRARY_PATH does not override this. This seems to deviate from the advertised behavior. Any idea why this is happening? How do I complete my rather simple task?
Thanks.
I understand that this question is old, but I found it while trying to sort out my own linking trouble which was similar. You will have to build your program against a version of libstdc++ which is compatible with your colleague's version of the library. The easiest solution, of course, is to link against his version of the library so he doesn't need to make special tweaks on his side to link your library.
To do this, you will want to install a version of GCC which can build binary compatible libraries so you can actually link against his version of libstdc++. GLIBCXX_3.4.11 is from gcc-4.4 and later, so you will need gcc-4.3. Build your program using this and you should be in good shape.
You can consult the following page for a list of library ABI compatabilities:
http://gcc.gnu.org/onlinedocs/libstdc++/manual/abi.html
You could also build an rpm/deb which requires the version of libstdc++ you already have and if it's not available, refuse to install. This gives you a bit of an interface which gives him a promise that if his system is setup with the correct dependencies, he can use your library. In that sense, it's like a loose SLA for your library in what you do and don't support.
Hope that helps!
I'm currently trying to get g++ working, and looking at http://gcc.gnu.org/install/build.html, I can't seem to find where it says how "to perform a 3-stage bootstrap of the compiler". Where would I find this information?
(I'm on a mac, in case that matters.)
After running configure, you do make bootstrap
You cannot bootstrap GCC without an already-functioning compiler on your platform:
From the prerequisites page:
ISO C90 compiler
Necessary to bootstrap GCC, although versions of GCC prior to 3.4 also allow bootstrapping with a traditional (K&R) C compiler.
And to preempt your next question, you also need a functioning compiler (usually GCC) in order to build Clang+LLVM.
It might be possible to do what you're trying so hard to do, by cross-compiling GCC from some other platform (see this section of the documentation). But I imagine this is not for the feint of heart, and you'd be far, far better off simply updating your copy of Mac OS X to the latest version with Xcode support.
From that link:
For a native build, the default configuration is to perform a 3-stage bootstrap of the compiler when `make' is invoked.
It seems to me that if your configuration isn't tweaked, it should do it out of the box. Just type make.
More specifically, you have to download the source code, and follow the instructions in that whole tutorial in order to build.
A side note - I am finding it hard to believe that there is no easy way to get GCC on an OSX box without having the installation media. That sounds really annoying :)
Edit:
If you are simply trying to write C++ on OSX, you could install one of many other IDEs. If you are lucky, they may come with their own compiler. Here is a list of alternatives to XCode:
http://alternativeto.net/desktop/xcode/?profile=mac&platform=mac
I just downloaded wxWidget source code on my snow leopard machine. The source code is the multiplatform one, so it contains windows and GTK components of wxWidget as well. I'd like to compile the wxWidget source code, but haven't found a good guide yet.
This is my first step to create a multiplatform project, hopefully I would be able to use CMake to generate makefile later on.
Any help would be appreciated.
EDIT: Just to clarify, I'd like to build stable release of wxWidget on Snow Leopard, it would be building wxWidget 2.8.x on OS X 10.6.x. I have read the compiling wiki here http://wiki.wxwidgets.org/Development:_wxMac#Building_under_10.6_Snow_Leopard
Unfortunately, it didn't help.
I like using configure/make/make install:
./configure --enable-monolithic --enable-universal_binary --disable-shared --with-macosx-sdk=/Developer/SDKs/MacOSX10.5.sdk
make
sudo make install
I just tried this with wxWidgets 2.9.0 and it worked great.
The wxWiki is always a good place for guides, specifically the various OSX guides and the extra note here about compiling under 10.6.
It would also be good to note that there have been many changes between the current stable releases and the trunk, specifically much work has been done on a port to Cocoa.
Using CMake is pretty straight forward, just check the FindWxWidgets.cmake file in CMake for instructions, you can also check out the CMake docs (I would give the link but they don't seem to be up right now).