cmake_minimum_required(VERSION 2.8) #----------------------------------------------------------------------------- project(PythonQtGenerator) #----------------------------------------------------------------------------- include(CTestUseLaunchers OPTIONAL) #----------------------------------------------------------------------------- # Setup Qt set(minimum_required_qt_version "4.6.2") find_package(Qt4) if(QT4_FOUND) set(found_qt_version ${QT_VERSION_MAJOR}.${QT_VERSION_MINOR}.${QT_VERSION_PATCH}) if(${found_qt_version} VERSION_LESS ${minimum_required_qt_version}) message(FATAL_ERROR "error: PythonQt requires Qt >= ${minimum_required_qt_version} -- you cannot use Qt ${found_qt_version}.") endif() set(QT_USE_QTXML ON) include(${QT_USE_FILE}) else() message(FATAL_ERROR "error: Qt4 was not found on your system. You probably need to set the QT_QMAKE_EXECUTABLE variable") endif() #----------------------------------------------------------------------------- # Sources set(sources parser/ast.cpp parser/binder.cpp parser/class_compiler.cpp parser/codemodel.cpp parser/codemodel_finder.cpp parser/compiler_utils.cpp parser/control.cpp parser/declarator_compiler.cpp parser/default_visitor.cpp parser/dumptree.cpp parser/lexer.cpp parser/list.cpp parser/name_compiler.cpp parser/parser.cpp parser/smallobject.cpp parser/tokens.cpp parser/type_compiler.cpp parser/visitor.cpp abstractmetabuilder.cpp abstractmetalang.cpp asttoxml.cpp customtypes.cpp fileout.cpp generator.cpp generatorset.cpp generatorsetqtscript.cpp main.cpp metajava.cpp metaqtscriptbuilder.cpp metaqtscript.cpp prigenerator.cpp reporthandler.cpp setupgenerator.cpp shellgenerator.cpp shellheadergenerator.cpp shellimplgenerator.cpp typeparser.cpp typesystem.cpp ) #----------------------------------------------------------------------------- # List headers. This list is used for the install command. set(headers ) #----------------------------------------------------------------------------- # Headers that should run through moc set(moc_sources fileout.h generator.h generatorset.h generatorsetqtscript.h prigenerator.h setupgenerator.h shellgenerator.h shellheadergenerator.h shellimplgenerator.h ) #----------------------------------------------------------------------------- # UI files set(ui_sources ) #----------------------------------------------------------------------------- # Resources set(qrc_sources generator.qrc ) #----------------------------------------------------------------------------- # Do wrapping qt4_wrap_cpp(gen_moc_sources ${moc_sources}) qt4_wrap_ui(gen_ui_sources ${ui_sources}) qt4_add_resources(gen_qrc_sources ${qrc_sources}) #----------------------------------------------------------------------------- # Copy file expected by the generator and specify install rules file(GLOB files_to_copy RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "build_*.txt" "typesystem_*.xml") list(APPEND files_to_copy qtscript_masterinclude.h parser/rpp/pp-qt-configuration) foreach(file ${files_to_copy}) configure_file( ${file} ${CMAKE_CURRENT_BINARY_DIR}/${file} COPYONLY ) get_filename_component(destination_dir ${file} PATH) install(FILES ${file} DESTINATION bin/${destination_dir}) endforeach() #----------------------------------------------------------------------------- # Build the library SOURCE_GROUP("Resources" FILES ${qrc_sources} ${ui_sources} ${files_to_copy} ) include_directories( ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/parser ${CMAKE_CURRENT_SOURCE_DIR}/parser/rpp ) add_definitions(-DRXX_ALLOCATOR_INIT_0) add_executable(${PROJECT_NAME} ${sources} ${gen_moc_sources} ${gen_ui_sources} ${gen_qrc_sources} ) target_link_libraries(${PROJECT_NAME} ${QT_LIBRARIES}) #----------------------------------------------------------------------------- # Install library (on windows, put the dll in 'bin' and the archive in 'lib') install(TARGETS ${PROJECT_NAME} RUNTIME DESTINATION bin LIBRARY DESTINATION lib ARCHIVE DESTINATION lib)