[CMake] Transfer Kdevelop-managed project to cmake with .ui
files and generated ui_*.h
junior0007
junior0007 at web.de
Tue Sep 11 08:50:40 EDT 2007
Wow thanks for the answers!
I prefer Mikes' suggestion, since his way apparently doesn't make me
change the sources ;-) It already works pretty good. I only have one
little thing left:
Again a linker problem...:
====================
CMakeFiles/ToolBox.dir/main.o: In function `main':
main.cpp:(.text+0x15): undefined reference to
`qInitResources_application()'
collect2: ld gab 1 als Ende-Status zurück
make[2]: *** [src/ToolBox] Fehler 1
make[1]: *** [src/CMakeFiles/ToolBox.dir/all] Fehler 2
make: *** [all] Fehler 2
====================
Any answers for that?
@Mike: Just to clarify the comments in the CMakeLists.txt:
# Set Non-Qt sources here
SET (HEADERTOOL_SRCS
# all cpp-files that don't include any QtClasse or have any Qt-Makros
)
SET (HEADERTOOL_HEADERS
# all h-files that don't include any QtClasse or have any Qt-Makros
)
SET (HEADERTOOL_QT_SRCS
# all cpp.files with Qt-Makros or -classes.
)
SET( HEADERTOOL_QT_MOC_HDRS
# all h. files with Qt-Markos or classes
)
Thanks,
junior
Am Dienstag, den 11.09.2007, 07:45 -0400 schrieb Mike Jackson:
> Have a look at my project located at:
>
> http://titanium.imts.us/viewvc/Task_4/ParadisTools/
>
> This project has a few Qt related targets in it. The one to look at
> would be:
>
> http://titanium.imts.us/viewvc/Task_4/ParadisTools/src/HeaderToolGui/
>
> Look at the CMakeLists.txt file in there. It should have everything
> you need to figure out how to port your project to CMake.
>
> Mike
> --
> Mike Jackson Senior Research Engineer
> Innovative Management & Technology Services
>
>
> On Sep 11, 2007, at 4:12 AM, junior0007 wrote:
>
> > Hey Guys,
> >
> > I have a nice little project running (so far) under Kdevelop that
> > contains some .ui-files. So far these ui-files are compiled using
> > uic (i
> > guess... - it's autom. done by Kdevelop...) so that the result is an
> > ui_*.h file. This ui_*.h File is then included by the classes.
> >
> > So far i already found some nice help browsing this list and so i
> > might
> > be on the right way. However i still have linking-probs maybe you can
> > help.
> >
> > The Project tree looks like:
> >> project
> >> bin
> >> src
> >> gui
> >> gui_ui
> >> model
> >
> > So far i just put a CMakeLists.txt into the project und project/src -
> > directory and startet with trial-and error - lots of errors
> >
> > I already had a look at the list and found some things that should do
> > the work, but how?
> >
> > Here is the src/CMakeLists.txt:
> >
> > ===================================================================
> > PROJECT (TOOLBOX)
> >
> > SET (CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/Modules )
> > SET (VERSION 0.0.9)
> >
> > # requires QT4 in this Project
> > find_package(Qt4 REQUIRED) # find and setup Qt4 for this project
> >
> > # Run Qt UIC on a UI file.
> > # Arguments:
> > # 1-N Names of .ui files
> > MACRO(AIS_UI)
> > FOREACH (it ${ARGN})
> > GET_FILENAME_COMPONENT(outfile ${it} NAME_WE)
> > # changed next line --added ui_
> > SET(outhfile ${CMAKE_CURRENT_BINARY_DIR}/ui_${outfile}.h)
> > SET(outcppfile ${CMAKE_CURRENT_BINARY_DIR}/${outfile}_uic.cpp)
> > ADD_CUSTOM_COMMAND(OUTPUT ${outhfile}
> > COMMAND ${QT_UIC_EXECUTABLE} ARGS -o ${outhfile}
> > ${CMAKE_CURRENT_SOURCE_DIR}/${it}
> > WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
> > MAIN_DEPENDENCY ${it}
> > DEPENDS ${it}
> > )
> > ADD_CUSTOM_COMMAND(OUTPUT ${outcppfile}
> > COMMAND ${QT_UIC_EXECUTABLE} ARGS
> > ${CMAKE_CURRENT_SOURCE_DIR}/${it} -impl ${outhfile} -o ${outcppfile}
> > WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
> > MAIN_DEPENDENCY ${it}
> > DEPENDS ${it} ${outhfile})
> > SET(CPP_SOURCE ${CPP_SOURCE} ${outcppfile})
> > AIS_MOC(${outhfile})
> >
> > SET(AIS_UIC_SOURCES ${AIS_UIC_SOURCES} ${outcppfile})
> > LIST(APPEND AIS_UIC_HEADERS ${outhfile})
> > ENDFOREACH (it)
> > ENDMACRO(AIS_UI)
> >
> > # Run Qt MOC on a C++ header file.
> > # Arguments:
> > # 1-N Names of headerfiles
> > MACRO(AIS_MOC)
> > FOREACH (it ${ARGN})
> > # Make .h filename absolute
> > GET_FILENAME_COMPONENT(infile ${it} ABSOLUTE)
> >
> > # Build x_moc.cpp filename
> > GET_FILENAME_COMPONENT(outfile ${it} NAME_WE)
> > SET(outfile ${CMAKE_CURRENT_BINARY_DIR}/${outfile}_moc.cpp)
> >
> > # Run MOC
> > ADD_CUSTOM_COMMAND(OUTPUT ${outfile}
> > COMMAND ${QT_MOC_EXECUTABLE}
> > ARGS ${infile} -o ${outfile}
> > WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
> > DEPENDS ${infile}
> > COMMENT MOCing ${it})
> > LIST(APPEND CPP_SOURCE ${outfile})
> > LIST(APPEND AIS_MOC_SOURCES ${outfile})
> > ENDFOREACH(it)
> > ENDMACRO(AIS_MOC)
> >
> >
> > # don't know for what but works ;-)
> > include(${QT_USE_FILE})
> > include_directories(${CMAKE_CURRENT_BINARY_DIR})
> >
> > # all QT_Designer Files
> > SET(GUI_SRCS gui_ui/conprefswidget.ui [..] )
> >
> > AIS_UI(${GUI_SRCS})
> >
> > # all files that contain a Q_OBJECT REFERENCE
> > SET (MOC_HDRS main.cpp [..] )
> >
> > SET (HDRS Tools.h [..] )
> > SET (SRCS Tools.cpp [..] )
> >
> >
> > INCLUDE_DIRECTORIES(
> > .
> > ${QT_INCLUDE_DIR}
> > ${QT_QT_INCLUDE_DIR}
> > ${QT_QTGUI_INCLUDE_DIR}
> > )
> >
> > SET(EXECUTABLE_OUTPUT_PATH build/)
> >
> > ADD_EXECUTABLE(Toolbox ${SRCS} ${HDRS} ${UIC_HDRS} ${MOC_HDRS})
> >
> > TARGET_LINK_LIBRARIES (Toolbox ${QT_LIBRARIES})
> > ======================================================================
> > =
> >
> > Works nice until linking... Linking causes: undefined reference to
> > `vtable for [...]
> >
> > Can anybody help?
> >
> >
> > Cheers
> > junior
> >
> >
> >
> > _______________________________________________
> > CMake mailing list
> > CMake at cmake.org
> > http://www.cmake.org/mailman/listinfo/cmake
>
More information about the CMake
mailing list