[CMake] cmake PyQT/SIP
luxInteg
lux-integ at btconnect.com
Wed Dec 8 17:48:15 EST 2010
On Sunday 05 December 2010 13:51:12 Michael Wild wrote:
> On 12/05/2010 02:04 AM, luxInteg wrote:
> > On Thursday 02 December 2010 07:48:55 Michael Wild wrote:
> >>>> Use ADD_CUSTOM_COMMAND.
> >>>
> >>> @Michael: that advice is not correct. add_custom_command sets up a
> >>> command to be run at "make" time. Instead, the execute_process command
> >>> should be used to run a command at "CMake" time which is what the OP
> >>> needs to generate his *.cpp files.
> >>>
> >>> @LuxInteg: See the CMakeLists.txt file at
> >>> http://plplot.svn.sourceforge.net/viewvc/plplot/trunk/bindings/qt_gui/p
> >>> yq t4/
> >>>
> >>> for an example of generating source code with sip.
> >>>
> >>> Alan
> >>
> >> Huh, why can't he run sip at build time? If you do:
> >>
> >> find_program(SIP_EXECUTABLE sip)
> >>
> >> add_custom_command(OUTPUT
> >>
> >> ${CMAKE_CURRENT_BINARY_DIR}/fileC.cpp
> >> ${CMAKE_CURRENT_BINARY_DIR}/fileD.cpp
> >>
> >> COMMAND ${SIP_EXECUTABLE} -c ${CMAKE_CURRENT_BINARY_DIR}
> >>
> >> ${CMAKE_CURRENT_SOURCE_DIR}/fileA.sip
> >>
> >> DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/fileA.sip
> >> COMMENT "Processing ${CMAKE_CURRENT_SOURCE_DIR}/fileA.sip"
> >> VERBATIM)
> >>
> >> add_library(myPythonExtension SHARED
> >>
> >> ${CMAKE_CURRENT_BINARY_DIR}/fileC.cpp
> >> ${CMAKE_CURRENT_BINARY_DIR}/fileD.cpp)
> >>
> >> # possibly link with required libraries here...
> >
> > Thanks for your hep so far
> >
> > I have been experimenting on the above with the following results:-
> >
> > When the dependency has other dependencies the above appears to fail;
> > i.e when filA.sip calls some file say PyQt4/QTCore/somefile.sip.
> > (And I do not know of anyway of fitting this inside the
> > add_custom_command() function.)
> >
> > I tried beforehand
> >
> > this:-
> >
> > set(PYQt4_SIP_FILES /usr/share/sip/PyQt4)
> >
> > then
> >
> > COMMAND ${SIP_EXECUTABLE} -c ${CMAKE_CURRENT_BINARY_DIR}
> >
> > ${CMAKE_CURRENT_SOURCE_DIR}/fileA.sip
> >
> > DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/fileA.sip
> > ${PYQt4_SIP_FILES}/PyQt4/QTCore/somefile.sip
> > MAIN_DEPENDENCY ${CMAKE_CURRENT_SOURCE_DIR}/fileA.sip
> >
> > I even tried (the penultimate line) with ${PYQt4_SIP_FILES}/PyQt4/
> >
> > but each time it comes back with
> >
> > "sip: Unable to find file "QtCore/somefile.sip" "
> >
> > I am using a FindSIP.cmake that kde4 uses.
> >
> > Advice would be appreciated
> >
> > luxInteg
>
> The DEPENDS option tells CMake about the dependency on somefile.sip, but
> not sip. You also need to pass "-I ${PYQT4_SIP_FILES}" to the sip
> processor.
>
> One word of advice: you seem to spurn documentation, but you really
> should read it.
advice taken and have been reading
The appropriate sip command (appendage) for the above appears to be:-
-I${SIP_PATH}
-s ".cpp"
-t WS_X11 -t Qt$version -w *version is your qtversion).
HOWEVER I am encountering severe linking problems.
More information about the CMake
mailing list