View Issue Details [ Jump to Notes ] | [ Print ] | ||||||||
ID | Project | Category | View Status | Date Submitted | Last Update | ||||
0002181 | CMake | CMake | public | 2005-08-24 04:23 | 2006-10-04 14:24 | ||||
Reporter | |||||||||
Assigned To | Bill Hoffman | ||||||||
Priority | low | Severity | feature | Reproducibility | always | ||||
Status | closed | Resolution | fixed | ||||||
Platform | OS | OS Version | |||||||
Product Version | |||||||||
Target Version | Fixed in Version | ||||||||
Summary | 0002181: Support of mingw32 and Qt4 open source edition | ||||||||
Description | Hi! I've made some changes to support building of Qt4 applications with mingw32. With these changes I'm able to use CMake with the opensource edition of Qt4. As a basis i've taken cmake 2.0.6 and the FindQt...cmake scripts from the CVS-server. The changes are: Modules/Platform/Windows-gcc.cmake: Adding the line: SET(CMAKE_SHARED_LIBRARY_CXX_FLAGS "") # -pic Modules/CMakeDefaultMakeRuleVariables: Create import-libraries (libXXX.dll.a) for shared libraries and do not link "gcc" to the application: # create a shared C++ library IF(NOT CMAKE_CXX_CREATE_SHARED_LIBRARY) IF (WIN32 AND CMAKE_COMPILER_IS_GNUCXX) SET(CMAKE_CXX_CREATE_SHARED_LIBRARY "<CMAKE_CXX_COMPILER> <CMAKE_SHARED_LIBRARY_CXX_FLAGS> -Wl,--out-implib,<TARGET>.a <LINK_FLAGS> <CMAKE_SHARED_LIBRARY_CREATE_CXX_FLAGS> <CMAKE_SHARED_LIBRARY_SONAME_CXX_FLAG><TARGET_SONAME> -o <TARGET> <OBJECTS> <LINK_LIBRARIES>") ELSE (WIN32 AND CMAKE_COMPILER_IS_GNUCXX) SET(CMAKE_CXX_CREATE_SHARED_LIBRARY "<CMAKE_CXX_COMPILER> <CMAKE_SHARED_LIBRARY_CXX_FLAGS> <LINK_FLAGS> <CMAKE_SHARED_LIBRARY_CREATE_CXX_FLAGS> <CMAKE_SHARED_LIBRARY_SONAME_CXX_FLAG><TARGET_SONAME> -o <TARGET> <OBJECTS> <LINK_LIBRARIES>") ENDIF (WIN32 AND CMAKE_COMPILER_IS_GNUCXX) ENDIF(NOT CMAKE_CXX_CREATE_SHARED_LIBRARY) IF(CMAKE_COMPILER_IS_GNUCXX) IF (NOT WIN32) SET(CMAKE_CXX_CREATE_SHARED_LIBRARY "${CMAKE_CXX_CREATE_SHARED_LIBRARY} -lgcc") ENDIF (NOT WIN32) ENDIF(CMAKE_COMPILER_IS_GNUCXX) # create a C shared library IF(NOT CMAKE_C_CREATE_SHARED_LIBRARY) IF (WIN32 AND CMAKE_COMPILER_IS_GNUCXX) SET(CMAKE_C_CREATE_SHARED_LIBRARY "<CMAKE_C_COMPILER> <CMAKE_SHARED_LIBRARY_C_FLAGS> -Wl,--out-implib,<TARGET>.a <LINK_FLAGS> <CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS> <CMAKE_SHARED_LIBRARY_SONAME_C_FLAG><TARGET_SONAME> -o <TARGET> <OBJECTS> <LINK_LIBRARIES>") ELSE (WIN32 AND CMAKE_COMPILER_IS_GNUCXX) SET(CMAKE_C_CREATE_SHARED_LIBRARY "<CMAKE_C_COMPILER> <CMAKE_SHARED_LIBRARY_C_FLAGS> <LINK_FLAGS> <CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS> <CMAKE_SHARED_LIBRARY_SONAME_C_FLAG><TARGET_SONAME> -o <TARGET> <OBJECTS> <LINK_LIBRARIES>") ENDIF (WIN32 AND CMAKE_COMPILER_IS_GNUCXX) ENDIF(NOT CMAKE_C_CREATE_SHARED_LIBRARY) Modules/FindQt4.cmake: - Disabling everything related to QTASSISTANT, QTMOTIF and QTNSPLUGIN. - Adding two macros to compile converted Qt3 applications with Qt4: # Create a QT3 image collection from the given images and append the filename of the generated file to outfiles. # QT3_CREATE_IMAGE_COLLECTION(outfiles inputfile ... ) MACRO(QT3_CREATE_IMAGE_COLLECTION outfiles ) # # Precede the current source dir to the image-list # SET(image_collection "") FOREACH(image ${ARGN}) SET(image_collection "${image_collection};${CMAKE_CURRENT_SOURCE_DIR}/${image}") ENDFOREACH(image) # # Create a custom command for creating the 'image_collection.cpp' file # ADD_CUSTOM_COMMAND (OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/image_collection.cxx COMMAND uic3 ARGS -embed qosgviewer ${image_collection} -o image_collection.cxx DEPENDS ${image_collection}) SET(${outfiles} ${${outfiles}} image_collection.cxx) ENDMACRO(QT3_CREATE_IMAGE_COLLECTION) # Wrap a converted QT3-ui-file with uic3 and create needed moc sources. # QT3_WRAP_UI(outfiles inputfile ... ) MACRO(QT3_WRAP_UI outfiles ) # get include dirs GET_DIRECTORY_PROPERTY(moc_includes_tmp INCLUDE_DIRECTORIES) SET(moc_includes) FOREACH(it ${moc_includes_tmp}) SET(moc_includes ${moc_includes} "-I${it}") ENDFOREACH(it) ADD_DEFINITIONS (-DQT3_SUPPORT) FOREACH(it ${ARGN}) # Create the filenames GET_FILENAME_COMPONENT(outfile ${it} NAME_WE) SET(infile ${CMAKE_CURRENT_SOURCE_DIR}/${it}) SET(ui_header ${CMAKE_CURRENT_BINARY_DIR}/${outfile}.h) SET(ui_source ${CMAKE_CURRENT_BINARY_DIR}/${outfile}.cxx) SET(moc_source ${CMAKE_CURRENT_BINARY_DIR}/moc_${outfile}.cxx) # Create headers and sources from the ui-file ADD_CUSTOM_COMMAND(OUTPUT ${ui_header} COMMAND uic3 ARGS -o ${ui_header} ${infile} MAIN_DEPENDENCY ${infile}) ADD_CUSTOM_COMMAND(OUTPUT ${ui_source} COMMAND uic3 ARGS -impl ${ui_header} ${infile} -o ${ui_source} MAIN_DEPENDENCY ${ui_header}) # Moc the created source (otherwise a "vtable" error occurs) ADD_CUSTOM_COMMAND(OUTPUT ${moc_source} COMMAND ${QT_MOC_EXECUTABLE} ARGS ${moc_includes} -o ${moc_source} ${ui_header} MAIN_DEPENDENCY ${ui_header}) SET(${outfiles} ${${outfiles}} ${ui_source} ${moc_source}) ENDFOREACH(it) ENDMACRO(QT3_WRAP_UI) | ||||||||
Tags | No tags attached. | ||||||||
Attached Files | CMakeDefaultMakeRuleVariables.cmake [^] (4,568 bytes) 1969-12-31 19:00 Windows-gcc.cmake [^] (787 bytes) 1969-12-31 19:00 FindQt4.cmake [^] (33,672 bytes) 1969-12-31 19:00 | ||||||||
Relationships | |
Relationships |
Notes | |
(0002941) Joern Tuemmler (reporter) 2005-08-24 04:33 |
Contact information: Joern.Tuemmler@gmx.de |
(0003051) Bill Hoffman (manager) 2005-09-23 15:31 |
Can you look at CMake 2.2.1 FindQT.cmake and FindQT4.cmake stuff, and apply your changes there? Thanks. |
(0004765) Alex Neundorf (developer) 2006-08-27 10:50 |
Does cmake 2.4.3 work for you out of the box ? |
Notes |
Issue History | |||
Date Modified | Username | Field | Change |
Issue History |
Copyright © 2000 - 2018 MantisBT Team |