Last active
March 28, 2023 11:32
-
-
Save Jihadist/3beb9f102e9c8162dca691d5d2e3ddde to your computer and use it in GitHub Desktop.
Cmake libdbus-c++-1
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# - Try to find libdbus-c++-1 include dirs and libraries | |
# | |
# Usage of this module as follows: | |
# | |
# find_package(DBusCXX) | |
# | |
# Variables used by this module, they can change the default behaviour and need | |
# to be set before calling find_package: | |
# | |
# DBusCXX_ROOT_DIR Set this variable to the root installation of | |
# libdbus-c++-1 if the module has problems finding the | |
# proper installation path. | |
# | |
find_path(DBusCXX_ROOT_DIR | |
NAMES include/dbus-c++-1/dbus-c++/dbus.h | |
Include/dbus-c++-1/dbus-c++/dbus.h | |
) | |
find_path(DBusCXX_ROOT_DIR | |
NAMES include/dbus-c++-1/dbus-c++/dbus.h | |
Include/dbus-c++-1/dbus-c++/dbus.h | |
) | |
find_path(DBusCXX_INCLUDE_DIR | |
NAMES dbus.h | |
HINTS ${DBusCXX_ROOT_DIR}/include/dbus-c++-1/dbus-c++ | |
) | |
find_library(DBusCXX_LIBRARY | |
NAMES dbus-c++-1 | |
HINTS ${DBusCXX_ROOT_DIR}/lib | |
) | |
find_library(DBusCXX_ECORE_LIBRARY | |
NAMES dbus-c++-ecore-1 | |
HINTS ${DBusCXX_ROOT_DIR}/lib | |
) | |
find_library(DBusCXX_GLIB_LIBRARY | |
NAMES dbus-c++-glib-1 | |
HINTS ${DBusCXX_ROOT_DIR}/lib | |
) | |
find_program (DBusCXX_XML2CPP | |
NAMES dbusxx-xml2cpp | |
HINTS ${DBusCXX_ROOT_DIR}/bin) | |
find_program (DBusCXX_INTROSPECT | |
NAMES dbusxx-introspect | |
HINTS ${DBusCXX_ROOT_DIR}/bin) | |
include(FindPackageHandleStandardArgs) | |
find_package_handle_standard_args(DBusCXX DEFAULT_MSG | |
DBusCXX_LIBRARY | |
DBusCXX_ECORE_LIBRARY | |
DBusCXX_GLIB_LIBRARY | |
DBusCXX_INCLUDE_DIR | |
DBusCXX_XML2CPP | |
DBusCXX_INTROSPECT | |
) | |
mark_as_advanced( | |
DBusCXX_ROOT_DIR | |
DBusCXX_INCLUDE_DIR | |
DBusCXX_LIBRARY | |
DBusCXX_ECORE_LIBRARY | |
DBusCXX_GLIB_LIBRARY | |
DBusCXX_XML2CPP | |
DBusCXX_INTROSPECT | |
) | |
message(STATUS "DBusCXX_INCLUDE_DIR ${DBusCXX_INCLUDE_DIR}") | |
message(STATUS "DBusCXX_LIBRARY ${DBusCXX_LIBRARY}") | |
add_library(dbus-c++ SHARED IMPORTED) | |
add_library(dbus-c++::dbus-c++ ALIAS dbus-c++) | |
set_property(TARGET dbus-c++ PROPERTY | |
IMPORTED_LOCATION "${DBusCXX_LIBRARY}") | |
target_include_directories(dbus-c++ INTERFACE ${DBusCXX_INCLUDE_DIR} ${DBusCXX_INCLUDE_DIR}/..) | |
add_library(dbus-c++-ecore SHARED IMPORTED) | |
add_library(dbus-c++::dbus-c++-ecore ALIAS dbus-c++-ecore) | |
set_property(TARGET dbus-c++-ecore PROPERTY | |
IMPORTED_LOCATION "${DBusCXX_ECORE_LIBRARY}") | |
add_executable(dbus-c++::xml2cpp IMPORTED) | |
set_property(TARGET dbus-c++::xml2cpp PROPERTY IMPORTED_LOCATION ${DBusCXX_XML2CPP}) | |
add_executable(dbus-c++::introspect IMPORTED) | |
set_property(TARGET dbus-c++::introspect PROPERTY IMPORTED_LOCATION ${DBusCXX_INTROSPECT}) | |
function(dbus_generate) | |
include(CMakeParseArguments) | |
set(_singleargs XMLFILE XML_OUT_DIR) | |
cmake_parse_arguments(dbus_generate "${_options}" "${_singleargs}" "${_multiargs}" "${ARGN}") | |
if(NOT dbus_generate_XMLFILE) | |
message(SEND_ERROR "Error: dbus_generate called without any targets or source files") | |
return() | |
endif() | |
if(NOT dbus_generate_XML_OUT_DIR) | |
set(dbus_generate_XML_OUT_DIR ${CMAKE_CURRENT_BINARY_DIR}) | |
endif() | |
get_filename_component(_abs_file ${dbus_generate_XMLFILE} ABSOLUTE) | |
get_filename_component(_abs_dir ${_abs_file} DIRECTORY) | |
message(STATUS "_abs_file ${_abs_file}") | |
message(STATUS "_abs_dir ${_abs_dir}") | |
get_filename_component(_file_full_name ${dbus_generate_XMLFILE} NAME) | |
string(FIND "${_file_full_name}" "." _file_last_ext_pos REVERSE) | |
string(SUBSTRING "${_file_full_name}" 0 ${_file_last_ext_pos} _basename) | |
message(STATUS "_file_full_name ${_file_full_name}") | |
message(STATUS "_basename ${_basename}") | |
set(_comment "Running xml2cpp compiler on ${_file_full_name}") | |
list(APPEND _generated_hdrs "${dbus_generate_XML_OUT_DIR}/${_basename}-proxy.h") | |
list(APPEND _generated_hdrs "${dbus_generate_XML_OUT_DIR}/${_basename}-adaptor.h") | |
message(STATUS "_generated_hdrs ${_generated_hdrs}") | |
add_custom_command( | |
OUTPUT ${_generated_hdrs} | |
COMMAND dbus-c++::xml2cpp | |
ARGS ${_abs_file} --proxy=${dbus_generate_XML_OUT_DIR}/${_basename}-proxy.h --adaptor=${dbus_generate_XML_OUT_DIR}/${_basename}-adaptor.h | |
COMMENT ${_comment} | |
VERBATIM ) | |
add_custom_target(_generate_headers${_basename} DEPENDS ${_generated_hdrs}) | |
set_source_files_properties(${_generated_hdrs} PROPERTIES GENERATED TRUE) | |
string(REPLACE "." "_" _libname ${_basename}) | |
add_library(${_basename} INTERFACE) | |
add_dependencies(${_basename} _generate_headers${_basename}) | |
add_library(dbus-c++::${_basename} ALIAS ${_basename}) | |
target_include_directories(${_basename} INTERFACE ${dbus_generate_XML_OUT_DIR}) | |
endfunction() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Example of usage: