Skip to content

ModOrganizer2/cmake_common

Repository files navigation

MO2 CMake Common

This repository contains useful CMake macro and functions that are used to ease creating CMake configuration for most of MO2 repositories (e.g., uibase, plugin_python or ModOrganizer2 itself).

Getting Started

1. With VCPKG

Add MO2 VCPKG registry to your vcpkg-configuration.json:

{
  "default-registry": {
    "kind": "git",
    "repository": "https://github.com/Microsoft/vcpkg",
    "baseline": "f61a294e765b257926ae9e9d85f96468a0af74e7"
  },
  "registries": [
    {
      "kind": "git",
      "repository": "https://github.com/ModOrganizer2/vcpkg-registry",
      "baseline": "27d8adbfe9e4ce88a875be3a45fadab69869eb60",
      "packages": ["mo2-cmake"]
    }
  ]
}

Add mo2-cmake to your VCPKG dependencies (vcpkg.json) and then import the utilities with find_package in your CMake configuration:

find_package(mo2-cmake CONFIG REQUIRED)

2. Manually

Clone this repository somewhere and then include(mo2.cmake) in your CMake configuration files.

Usage

Be aware that using these utilities will automatically set some (not too intrusive) global variable on your project.

In order to properly use this package, you should set CMAKE_INSTALL_PREFIX to a valid location. There are two possible way of using this package controlled by the MO2_INSTALL_IS_BIN option:

  • if MO2_INSTALL_IS_BIN is OFF (default), this assumes a layout with a bin, lib, include and pdb folder under CMAKE_INSTALL_PREFIX,
  • if MO2_INSTALL_IS_BIN is ON (default when building standalone), this assumes that CMAKE_INSTALL_PREFIX point directly to the equivalent bin folder.

Importing the utilities will make the following variables available:

  • MO2_QT_VERSION - The Qt version used by MO2, as major.minor.patch.
  • MO2_QT_MAJOR_VERSION, MO2_QT_MINOR_VERSION and MO2_QT_PATCH_VERSION - Respectively the major, minor and patch version of Qt used by MO2.
  • MO2_PYTHON_VERSION - The Python version used by MO2 as major.minor (patch version should not be relevant).

All functions are prefixed by mo2_ and should not conflict with other existing functions.

Generic Utilities

  • mo2_set_if_not_defined - Set a variable to a given value if the variable is not defined.
  • mo2_add_subdirectories -
  • mo2_find_python_executable - Find Python executable.
  • mo2_find_git_hash - Find the hash of the current git HEAD.
  • mo2_find_qt_executable - Find a given Qt executable.
  • mo2_set_project_to_run_from_install - Configure the debug executable for a VS project.
  • mo2_add_filter - Add a source group filter.
  • mo2_deploy_qt_for_tests - Deploy Qt DLLs, etc., for tests.
  • mo2_deploy_qt - Deploy Qt DLLs for ModOrganizer2.
  • mo2_add_lupdate - Create a target to run Qt lupdate.
  • mo2_add_lrelease - Create a target to Qt lrelease.
  • mo2_add_translations - Add targets to generate translations for the given target.

C++ Utilities

TODO:

  • mo2_configure_warnings - Utility function configure warnings for a target.
  • mo2_configure_sources - Glob and configure sources, including Qt-related files (.ui, etc.) for a target.
  • mo2_configure_msvc - Set some MSVC-specific flag for a target.
  • (Deprecated) mo2_configure_target - Combine the above function + Extra stuff.
  • (Deprecated) mo2_configure_plugin
  • mo2_configure_tests - TO BE CHANGED
  • mo2_install_plugin - Install a plugin.

Python Utilities

  • mo2_python_uifiles - Add a target to generate .py files from .ui files.
  • mo2_python_pip_install - Install Python packages.
  • mo2_python_requirements - Install plugin requirements from a plugin-requirements.txt file, ready to ship.
  • mo2_configure_python_module - Configure a Python module plugin.
  • (Deprecated) mo2_configure_python_simple - Configure a Python single file plugin.
  • mo2_configure_python - Wrapper for the two above functions.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published

Contributors 6

Languages