diff --git a/CMakeLists.txt b/CMakeLists.txt index a12d4e36..9ad9acd1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,116 +1,115 @@ project(kalzium) cmake_minimum_required(VERSION 2.8.12) find_package(ECM 5.7.0 REQUIRED NO_MODULE) set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH} ${kalzium_SOURCE_DIR}/cmake/modules) include(KDEInstallDirs) include(KDECompilerSettings NO_POLICY_SCOPE) include(KDECMakeSettings) include(FeatureSummary) include(ECMInstallIcons) include(ECMMarkNonGuiExecutable) include(CheckIncludeFiles) include(ECMSetupVersion) find_package(Gettext REQUIRED) find_package(PythonInterp REQUIRED) find_package(PkgConfig) find_package(OpenBabel2) find_package(AvogadroLibs) find_package(Eigen3) find_package(OCaml) find_package(Libfacile) pkg_check_modules(CHEMICAL_MIME_DATA chemical-mime-data) check_include_files(ieeefp.h HAVE_IEEEFP_H) # create configuration file set(HAVE_FACILE ${LIBFACILE_FOUND}) set(HAVE_OPENBABEL2 ${OPENBABEL2_FOUND}) set(HAVE_EIGEN ${EIGEN3_FOUND}) set(HAVE_AVOGADRO ${AvogadroLibs_FOUND}) configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/config-kalzium.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-kalzium.h ) include_directories(${AvogadroLibs_INCLUDE_DIRS}) find_package(Qt5 REQUIRED COMPONENTS Widgets Script Core - Quick Gui OpenGL Svg ) find_package(KF5 REQUIRED COMPONENTS Archive Config CoreAddons DocTools I18n KDELibs4Support KHtml Parts Plotting Solid UnitConversion WidgetsAddons ) ecm_setup_version("5.0.0" VARIABLE_PREFIX KALZIUMLIB ) # search packages used by KDE if(WIN32) find_package(KDEWIN32 REQUIRED) # detect oxygen icon dir at configure time based on KDEDIRS - there may be different package installation locations #execute_process(COMMAND "${KDE4_KDECONFIG_EXECUTABLE}" --path icon OUTPUT_VARIABLE _dir #ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE) #file(TO_CMAKE_PATH "${_dir}" __dir) #find_path(KDE4_ICON_DIR oxygen PATHS # ${__dir}) # message(STATUS "using oxygen application icons from ${KDE4_ICON_DIR}") else(WIN32) # set (KDE4_ICON_DIR ${CMAKE_INSTALL_PREFIX}/share/icons) endif(WIN32) add_definitions( -DQT_NO_URL_CAST_FROM_STRING -DQT_USE_FAST_CONCATENATION -DQT_USE_FAST_OPERATOR_PLUS ) #include_directories (${QDBUS_INCLUDE_DIRS} ${CMAKE_SOURCE_DIR} ${CMAKE_BINARY_DIR} ${KDE4_INCLUDES} libscience) if(MSVC) # for correctly linking openbabel: # see http://www.mail-archive.com/openbabel-devel@lists.sourceforge.net/msg01975.html add_definitions(-DUSING_DYNAMIC_LIBS) endif(MSVC) if (OPENBABEL2_FOUND AND AvogadroLibs_FOUND AND EIGEN3_FOUND) find_package(KF5NewStuff REQUIRED) # avoid compilerwarnings about redefinitions # todo: use check_function_exits() ? message(STATUS "Kalzium molecular editor enabled") if (WIN32) add_definitions(-DHAVE_SNPRINTF -DHAVE_STRCASECMP -DHAVE_STRNCASECMP) endif (WIN32) add_subdirectory(compoundviewer) else (OPENBABEL2_FOUND AND AvogadroLibs_FOUND AND EIGEN3_FOUND) message(STATUS "Kalzium molecular editor disabled") endif (OPENBABEL2_FOUND AND AvogadroLibs_FOUND AND EIGEN3_FOUND) add_subdirectory(doc) add_subdirectory(src) add_subdirectory(data) # add_subdirectory(plasmoid) add_subdirectory(libscience) # add_subdirectory(qml) install(FILES org.kde.kalzium.appdata.xml DESTINATION ${KDE_INSTALL_METAINFODIR}) feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 0b1936eb..fd485abe 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,204 +1,203 @@ include_directories( ${CMAKE_SOURCE_DIR}/libscience/ ../compoundviewer tools calculator psetable isotopetable ${CMAKE_CURRENT_BINARY_DIR}/.. ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR} ) ########### next target ############### # The tools can only be built when OpenBabel2 is found. # The moleculeviewer needs not only OpenBabel2 but also Eigen2 and Avogadro, # so there is a nested if-check. if (OPENBABEL2_FOUND) set(kalziumtools_SRCS tools/obconverter.cpp ) ki18n_wrap_ui(kalziumtools_SRCS tools/obconverterwidget.ui ) include_directories(${OPENBABEL2_INCLUDE_DIR}) if (EIGEN3_FOUND AND AvogadroLibs_FOUND) #include(${Avogadro_USE_FILE}) set(kalziumtools_SRCS ${kalziumtools_SRCS} tools/moleculeview.cpp ../compoundviewer/kalziumglwidget.cpp ) ki18n_wrap_ui(kalziumtools_SRCS tools/moleculeviewerwidget.ui ) include_directories(${EIGEN3_INCLUDE_DIR}) endif (EIGEN3_FOUND AND AvogadroLibs_FOUND) endif (OPENBABEL2_FOUND) ## Kalzium calculator files set(kalziumtools_SRCS ${kalziumtools_SRCS} calculator/calculator.cpp calculator/nuclearCalculator.cpp calculator/gasCalculator.cpp calculator/concCalculator.cpp calculator/titrationCalculator.cpp # calculator/massCalculator.cpp ) ki18n_wrap_ui(kalziumtools_SRCS calculator/calculator.ui calculator/nuclearCalculator.ui calculator/gasCalculator.ui calculator/concCalculator.ui calculator/settings_calc.ui calculator/titrationCalculator.ui # calculator/massCalculator.ui ) set(kalzium_SRCS ${kalziumtools_SRCS} isotopetable/informationitem.cpp isotopetable/isotopeguideview.cpp isotopetable/isotopeitem.cpp isotopetable/isotopescene.cpp isotopetable/isotopetabledialog.cpp isotopetable/isotopeview.cpp psetable/elementitem.cpp psetable/numerationitem.cpp psetable/periodictableview.cpp psetable/periodictablescene.cpp psetable/periodictablestates.cpp psetable/statemachine.cpp kalzium.cpp main.cpp detailinfodlg.cpp tablesdialog.cpp detailedgraphicaloverview.cpp orbitswidget.cpp elementdataviewer.cpp molcalcwidget.cpp gradientwidget_impl.cpp kalziumdataobject.cpp kalziumutils.cpp kalziumgradienttype.cpp kalziumnumerationtype.cpp kalziumelementproperty.cpp kalziumschemetype.cpp kalziumunitcombobox.cpp unitsettingsdialog.cpp search.cpp searchwidget.cpp rsdialog.cpp legendwidget.cpp exportdialog.cpp tableinfowidget.cpp spectrumviewimpl.cpp spectrumwidget.cpp kdeeduglossary.cpp ) if (LIBFACILE_FOUND) include(CMakeOCamlInstructions.cmake) set(kalzium_SRCS ${kalzium_SRCS} eqchemview.cpp ${CMAKE_CURRENT_BINARY_DIR}/solver.o ${CMAKE_CURRENT_BINARY_DIR}/modwrap.o ) ki18n_wrap_ui(kalzium_SRCS equationview.ui ) endif (LIBFACILE_FOUND) ki18n_wrap_ui(kalzium_SRCS isotopetable/isotopedialog.ui settings_colors.ui plotsetupwidget.ui molcalcwidgetbase.ui spectrumview.ui settings_gradients.ui rswidget.ui gradientwidget.ui exportdialog.ui ) kconfig_add_kcfg_files(kalzium_SRCS prefs.kcfgc ) #kde4_add_app_icon(kalzium_SRCS "${CMAKE_CURRENT_SOURCE_DIR}/hi*-app-kalzium.png") add_executable(kalzium ${kalzium_SRCS}) target_link_libraries(kalzium KF5::Plotting KF5::KHtml KF5::KDELibs4Support KF5::UnitConversion Qt5::Script Qt5::Svg - Qt5::Quick science ) if (OPENBABEL2_FOUND) target_link_libraries(kalzium ${OPENBABEL2_LIBRARIES}) if (EIGEN3_FOUND AND AvogadroLibs_FOUND) target_link_libraries(kalzium KF5::NewStuff Qt5::OpenGL compoundviewer AvogadroQtGui AvogadroQtOpenGL AvogadroQtPlugins ) endif (EIGEN3_FOUND AND AvogadroLibs_FOUND) endif (OPENBABEL2_FOUND) if (LIBFACILE_FOUND) link_directories(${OCAMLC_DIR}) set(CMAKE_LIBRARY_PATH ${OCAMLC_DIR}) set(kalzium_EXTRA_LIBS) find_library(OCAML_ASMRUN_LIBRARY NAMES asmrun) if (OCAML_ASMRUN_LIBRARY) set(kalzium_EXTRA_LIBS ${kalzium_EXTRA_LIBS} ${OCAML_ASMRUN_LIBRARY}) endif (OCAML_ASMRUN_LIBRARY) find_library(OCAML_STR_LIBRARY NAMES str) if (OCAML_STR_LIBRARY) set(kalzium_EXTRA_LIBS ${kalzium_EXTRA_LIBS} ${OCAML_STR_LIBRARY}) endif (OCAML_STR_LIBRARY) find_library(OCAML_NUMS_LIBRARY NAMES nums) if (OCAML_NUMS_LIBRARY) set(kalzium_EXTRA_LIBS ${kalzium_EXTRA_LIBS} ${OCAML_NUMS_LIBRARY}) endif (OCAML_NUMS_LIBRARY) target_link_libraries(kalzium ${kalzium_EXTRA_LIBS} m ${CMAKE_DL_LIBS}) endif (LIBFACILE_FOUND) install(TARGETS kalzium ${INSTALL_TARGETS_DEFAULT_ARGS}) ########### install files ############### install(PROGRAMS org.kde.kalzium.desktop org.kde.kalzium_cml.desktop DESTINATION ${XDG_APPS_INSTALL_DIR}) install(FILES kalzium.kcfg DESTINATION ${KCFG_INSTALL_DIR}) install(FILES kalziumui.rc DESTINATION ${KXMLGUI_INSTALL_DIR}/kalzium) install(FILES kalzium.knsrc DESTINATION ${CONFIG_INSTALL_DIR}) ecm_install_icons(ICONS 16-apps-kalzium.png 22-apps-kalzium.png 32-apps-kalzium.png 48-apps-kalzium.png 64-apps-kalzium.png 128-apps-kalzium.png sc-apps-kalzium.svgz DESTINATION ${KDE_INSTALL_ICONDIR} THEME hicolor )