ext Brendan Duncan wrote:
I've started building pySide on OSX, and while I'm not finished yet, I
figured it would be good to share what I have so far and maybe others
can help. I am very new to OSX development and to CMake (I'll hold back
my feelings on that one), so my solutions may not be (and probably
aren't) the best way to do it.
So far I've managed to build apiextractor, boostpythongenerator, and
Shiboken. PySide is still giving me some trouble.
Hi, Brendan!
This is great news! I'm sure others can chime in on the build system
specifics, but at this point I can just mention that Shiboken is an
experimental boostpythongenerator replacement and thus is (currently)
not required at all. So you can safely skip that.
Cheers,
ma.
My system has installed:
OS X 10.6 Snow Leopard
Boost 1.40.0
Qt 4.5.2
CMake 2.6
====================================================================
apiextractor
====================================================================
A few modifications are needed to the CMakeList.txt file for
apiextractor to build on OSX.
1)
If you trying building apiextractor, cmake complains it can't find
modules libxslt and libxml2.
These libraries are system libraries in OSX and can be found in
/usr/include and /usr/lib.
libxslt 1.1.22 (>= 1.1.19 needed by apiextractor)
libxml2 2.7.3 (>= 2.6.32 needed by apiextractor)
I don't know how to get cmake to recognize the system version of these
libraries, so I just
commented out the requires from the CMake file. E
Edit CMakeLists.txt and comment out the pkg_check_modules lines for
those libraries:
#pkg_check_modules(LIBXML2 REQUIRED libxml-2.0>=2.6.32)
#pkg_check_modules(LIBXSLT REQUIRED libxslt>=1.1.19)
2)
The makefiles can now be built by cmake, but trying to run make to
compile complains because it can't find the Qt headers in "Qt/...".
When I built Qt, it put the headers and libraries in
their Framework install directories, but it also put the headers in
/usr/local/Trolltech/Qt-4.5.2/include
These are the headers apiextractor is expecting to find, so we need to
add that path to the
header search path.
I don't know the official place to add extra include paths to CMake, so
I added it to the
CMAKE_CXX_FLAGS variable.
Modify the CMAKE_CXX_FLAGS line to include the Qt include directory:
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall
-DAPIEXTRACTOR_ENABLE_DUPLICATE_ENUM_VALUES
-I/usr/local/Trolltech/Qt-4.5.2/include")
3)
It'll compile, but it won't link because it's missing symbols from
libxslt and libxml2.
Add the line (just after CMAKE_CXX_FLAGS):
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -lxml2 -lxslt")
4)
Now apiextractor will build.
mkdir build
cd build
cmake ..
make
sudo make install
The install will copy files to /usr/local/[include,lib,share].
====================================================================
boostpythongenerator
====================================================================
It doesn't take much to get boostpythongenerator to build.
1)
If you try running cmake, it will complain about not being able to find
FindApiExtractor.cmake.
This was installed in /usr/local/share/cmake-2.6/Modules by the build
for apiextractor.
We can add that path to cmake from the command line.
mkdir build
cd build
cmake -DCMAKE_MODULE_PATH=/usr/local/share/cmake-2.6/Modules ..
2)
Now boostpythongenerator will build.
make
sudo make install
The install will copy files to /usr/local/[include,lib,bin,share].
====================================================================
shiboken
====================================================================
There's probably a much better way to get shiboken to build, but my
first attempt was just to get it to build and worry about the "better
way" later.
1)
If you try building, the compiler will complain with the error:
shiboken/libshiboken/basewrapper.h:51: error: ‘uint’ does not name a type
Apparently OSX doesn't acknowledge the type uint (lazy way of writing
"unsigned int").
I'm not sure what the best way to solve this is yet, so my "just make it
work" solution was:
edit libshiboken/basewrapper.cpp and libshiboken/basewrapper.h:
Replace all:
uint
with:
unsigned int
2)
Like boostpythongenerator, cmake needs to know where the other modules
it has built are.
mkdir build
cd build
cmake -DCMAKE_MODULE_PATH=/usr/local/share/cmake-2.6/Modules ..
make
sudo make install
====================================================================
PySide
====================================================================
I still haven't gotten very far with this one yet, but I'll add an
update when I get a chance.
I would also be interested in hearing other peoples tips on building on
OSX, especially if there are better ways to do things.
_______________________________________________
PySide mailing list
[email protected]
http://lists.openbossa.org/listinfo/pyside