Author Topic: Mac OSX: How can I get it to find "wx"  (Read 19714 times)

bnilsson

  • Guest
Mac OSX: How can I get it to find "wx"
« on: August 30, 2006, 08:56:31 pm »
Platform: Dual 2.3GHz PowerMac G5, Mac OSX 10.4.7, Xcode Tools 2.4. wxWidgets 2.6.3
Code::Blocks 1.0 revision 2913

I am an absolute beginner in C::B, I just got the application running on Mac OSX.
I created a new wxWidgets project and tried to build it, but it failed to find the header in
#include <wx/wxprec.h>

I have tried to understand how to set up global variable, but failed.

The particular file that was not found resides in
/opt/local/include/wx-2.6/wx/
The libwx* libraries are in
/opt/local/lib

Any hints?



sethjackson

  • Guest
Re: Mac OSX: How can I get it to find "wx"
« Reply #1 on: August 30, 2006, 10:19:14 pm »
Platform: Dual 2.3GHz PowerMac G5, Mac OSX 10.4.7, Xcode Tools 2.4. wxWidgets 2.6.3
Code::Blocks 1.0 revision 2913

I am an absolute beginner in C::B, I just got the application running on Mac OSX.
I created a new wxWidgets project and tried to build it, but it failed to find the header in
#include <wx/wxprec.h>

I have tried to understand how to set up global variable, but failed.

The particular file that was not found resides in
/opt/local/include/wx-2.6/wx/
The libwx* libraries are in
/opt/local/lib

Any hints?




I think you need to point the global variable wx to /opt/local/lib

HTH

Offline afb

  • Developer
  • Lives here!
  • *****
  • Posts: 884
Re: Mac OSX: How can I get it to find "wx"
« Reply #2 on: August 30, 2006, 11:47:38 pm »
The particular file that was not found resides in
/opt/local/include/wx-2.6/wx/
The libwx* libraries are in
/opt/local/lib

I normally use "wx-config" to find those.

Code
CFLAGS=`wx-config --cflags`
CXXFLAGS=`wx-config --cxxflags`
LDFLAGS=`wx-config --libs`

bnilsson

  • Guest
Re: Mac OSX: How can I get it to find "wx"
« Reply #3 on: September 03, 2006, 11:37:12 am »
Quote
I normally use "wx-config" to find those.

Code:
CFLAGS=`wx-config --cflags`
CXXFLAGS=`wx-config --cxxflags`
LDFLAGS=`wx-config --libs`
Posted on: August 30, 2006, 04:19:14 PM

I am pretty convinced I do not know how to use this advice:

[Tiger:~] bnilsson% CFLAGS=`wx-config --cflags`
tcsh: CFLAGS=-I/opt/local/lib/wx/include/mac-ansi-release-static-2.6: Command not found.
[Tiger:~] bnilsson% CXXFLAGS=`wx-config --cxxflags`
tcsh: CXXFLAGS=-I/opt/local/lib/wx/include/mac-ansi-release-static-2.6: Command not found.
[Tiger:~] bnilsson% LDFLAGS=`wx-config --libs`
tcsh: LDFLAGS=-L/opt/local/lib: Command not found.
[Tiger:~] bnilsson%

How do I use the result?

Offline Auria

  • Almost regular
  • **
  • Posts: 152
Re: Mac OSX: How can I get it to find "wx"
« Reply #4 on: September 03, 2006, 04:56:10 pm »
Calling 'wx-config' assumes you installed wx (e.g. make install) if you didn't do it, cd into the dir where you built (for me it's osx-build ) then call it - or you can also also copy inplace-mac-ansi-whatever into /usr/bin - i'm not sure how right it is to do that but at least it works fine for me

Offline Game_Ender

  • Lives here!
  • ****
  • Posts: 551
Re: Mac OSX: How can I get it to find "wx"
« Reply #5 on: September 03, 2006, 05:25:54 pm »
I believe that all Macs have wxMac 2.5 installed by default, so wx-config will give you that one.  I think the Darwin Ports installed wxMac wx-config override this, but you should check.

bnilsson

  • Guest
Re: Mac OSX: How can I get it to find "wx"
« Reply #6 on: September 03, 2006, 06:31:21 pm »
How do I use the result?

Offline Auria

  • Almost regular
  • **
  • Posts: 152
Re: Mac OSX: How can I get it to find "wx"
« Reply #7 on: September 03, 2006, 08:13:31 pm »
wx-config --cxxflags and friends, will give you the compiler flags required to build wxWidget projects

you'll need to learn what are and where to put compiler flags if you don't know (and your questions makes me think so)

And since you're on mac... you could use the wx framework that comes with your computer with a single flag: -framework wxWidgets (or whatever it's called, i don't know, i don't have it on 10.3)

Since this is Code::Blocks forum, i'm assuming you're using Code::Blocks? Though it seems like you're on mac, and Code::Blocks for mac is kind of early and unstable. If you really want to use it, then just find the area where compiler and linker flags go and paste the right flags there.

Or use the wxWidgets project template. It works fine over here on 10.3.9 computer with wx 2.7. If it doesn't work for you it might be a hint that you didn't install wxWidgets properly? wx-config should really not cause problems... or maybe it's a 10.4 problem

you said you're an absolute beginner in Code::blocks, but are you an absolute beginner in programming in general, or just in Code::blocks?

And how did you install wx?
« Last Edit: September 03, 2006, 08:20:04 pm by Auria »

bnilsson

  • Guest
Re: Mac OSX: How can I get it to find "wx"
« Reply #8 on: September 03, 2006, 09:53:40 pm »
Quote
wx-config --cxxflags and friends, will give you the compiler flags required to build wxWidget projects

you'll need to learn what are and where to put compiler flags if you don't know (and your questions makes me think so)
Absolutely true.
Quote

And since you're on mac... you could use the wx framework that comes with your computer with a single flag: -framework wxWidgets (or whatever it's called, i don't know, i don't have it on 10.3)

..that comes with my computer..? wxWidgets is not bundled with Mac OS X 10.4.7 as far as I know.

Quote
Since this is Code::Blocks forum, i'm assuming you're using Code::Blocks? Though it seems like you're on mac, and Code::Blocks for mac is kind of early and unstable.
Do you suggest I get myself a WinPC and start learing Code::Blocks there, to get a feeling for the "normal" programming enviroment first?
Quote
If you really want to use it, then just find the area where compiler and linker flags go and paste the right flags there.
Which brings me to the fundamental question:
Do I need a global variable or a compiler flag to define the meaning of "wx"?
Quote
Or use the wxWidgets project template.
That's exactly what I did.
I created a "wxWidgets application" from the template wizard.
Pressing "Build" immidiately gave an error message
"./wx_pch.h     9      error: wx/wxprec.h: No such file or directory"
which led me to assume that wx was not defined since the file existed at the expected location.
I would have expected a wxWidgets template should have included the proper flags if needed. If they had existed but pointed in the wrong direction, I could have found them and modified it accordingly. But there was nothing.
Quote
It works fine over here on 10.3.9 computer with wx 2.7. If it doesn't work for you it might be a hint that you didn't install wxWidgets properly? wx-config should really not cause problems... or maybe it's a 10.4 problem

you said you're an absolute beginner in Code::blocks, but are you an absolute beginner in programming in general, or just in Code::blocks?
I have been using CodeWarrior C/C++ for true cross-platform applications on Mac and WinPC for about 15 years.
I have been programming in the unix environment since I got my first Mac OSX, mainly continuing making source code. However, I am unexperienced in the programming environment setup such as  writing Makefiles and understanding a proper gcc command line. I have gone as far as doing ./configure and make on opensource projects found on the net. I have also copied Makefiles from small projects and modified them to work with my own source code, not really understanding everything I've been doing.
I was hoping to port my cross-platform work from MWCW to someting more modern since the MWCW support stopped at OS X SDK 10.3.9.
It looked like Code::Blocks would help me avoiding commandline compiling, at least for a while, and still extend my cross-platform work to unix. I have some tru64 systems at my work that I would like to port some software to. But is teems I might have been too optimistic.
Quote
And how did you install wx?
By ./configure --prefix=/opt/local,  make, make install.

bnilsson

  • Guest
Re: Mac OSX: How can I get it to find "wx"
« Reply #9 on: September 03, 2006, 10:30:49 pm »

I just want to add that I until recently used CPLAT2 for cross-platform GUI projects, but I have a feeling I have reached the end of that line. However, it worked rather well in the latesr versions. It worked with MWCW8.3 for MacOSX and WinPC, but still incompatible with the latest OSX SDKs and unix environments. Many unix projects that I was working on required headers that just did not fit in this environment, making it impossible to port into such a GUI project.


Offline Pecan

  • Plugin developer
  • Lives here!
  • ****
  • Posts: 2750
Re: Mac OSX: How can I get it to find "wx"
« Reply #10 on: September 03, 2006, 11:19:26 pm »
Note the backticks



« Last Edit: September 03, 2006, 11:21:01 pm by Pecan »

Offline Pecan

  • Plugin developer
  • Lives here!
  • ****
  • Posts: 2750
Re: Mac OSX: How can I get it to find "wx"
« Reply #11 on: September 03, 2006, 11:28:35 pm »

Offline afb

  • Developer
  • Lives here!
  • *****
  • Posts: 884
Re: Mac OSX: How can I get it to find "wx"
« Reply #12 on: September 03, 2006, 11:41:33 pm »
Quote
I normally use "wx-config" to find those.

I am pretty convinced I do not know how to use this advice:
...
How do I use the result?

Sorry, that exact code (verbatim) was from the Makefiles that I still use...
I meant that you could enter it in the proper C::B dialogs, as Pecan showed.

There is no "framework" provided for Mac OS X, just dynamic libraries (dylib).
But I'm probably going to provide a framework in the wxD project, eventually.

Basically the wx.framework consists of the libraries and the headers, bundled.

Offline Pecan

  • Plugin developer
  • Lives here!
  • ****
  • Posts: 2750
Re: Mac OSX: How can I get it to find "wx"
« Reply #13 on: September 03, 2006, 11:56:03 pm »

Offline Auria

  • Almost regular
  • **
  • Posts: 152
Re: Mac OSX: How can I get it to find "wx"
« Reply #14 on: September 04, 2006, 02:05:11 am »
Quote
I have been using CodeWarrior C/C++ for true cross-platform applications on Mac and WinPC for about 15 years.
I have been programming in the unix environment since I got my first Mac OSX, mainly continuing making source code. However, I am unexperienced in the programming environment setup such as  writing Makefiles and understanding a proper gcc command line. I have gone as far as doing ./configure and make on opensource projects found on the net. I have also copied Makefiles from small projects and modified them to work with my own source code, not really understanding everything I've been doing.
I was hoping to port my cross-platform work from MWCW to someting more modern since the MWCW support stopped at OS X SDK 10.3.9.
It looked like Code::Blocks would help me avoiding commandline compiling, at least for a while, and still extend my cross-platform work to unix. I have some tru64 systems at my work that I would like to port some software to. But is teems I might have been too optimistic.

If you can program C/C++, you certainly can learn command-line arguments :) just give it a try, it's not hard and will help a lot your understanding of things

You know, using the command-line isn't a way to complicate easy things. I'm not saying you should compile everything from the command-line. It's just that understanding what messages you can give to the compiler will make it much easier to compile stuff.

Quote
Do you suggest I get myself a WinPC and start learing Code::Blocks there, to get a feeling for the "normal" programming enviroment first?

I suggest that on mac you should use XCode until Code::Blocks gets better, or until you have a better understanding of the build process. Though it won't save you from using compiler flags either. (Well i don't know how Code::Blocks behaves on 10.4 -- maybe it's more usable than on 10.3) However, if you need cross-platform, of course it won't work. Either use Code::Blocks, but knowing it may not work properly. For instance, on my compuer, Code::blocks isn't able to run projects or to debug.

Quote
By ./configure --prefix=/opt/local,  make, make install.
I'm not an expert at building wx, but if i'm not mistaken you're building a shared library... Hope you know what it means? I built static. Might be why it worked for me and not for you?

Quote
Do I need a global variable or a compiler flag to define the meaning of "wx"?
Haven't read everything so i could be wrong, but i believe the global variable was the path to 'wx-config'. If you don't install 'wx-config' into /usr folders, or if some program can't find it, you can define a global variable pointing to it.

Once you know where is 'wx-config', you can ask it to give you the required compiler flags and paste them in the right fields (or, as Pecan showed you, you can also make 'wx-config' give the flags directly to code::blocks)

then, the compiler, by reading the flags will be able to build a proper wxWidgets app
« Last Edit: September 04, 2006, 02:12:34 am by Auria »