Подключение библиотеки из внешнего проекта
This commit is contained in:
parent
1f12b5ad28
commit
bbb9f4a61a
8
3rdparty/libcmext/CMakeLists.txt
vendored
Normal file
8
3rdparty/libcmext/CMakeLists.txt
vendored
Normal file
@ -0,0 +1,8 @@
|
||||
cmake_minimum_required(VERSION 3.3)
|
||||
project(cmext)
|
||||
|
||||
include(GNUInstallDirs)
|
||||
add_library(cmext cmext.cpp)
|
||||
install(TARGETS cmext ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
|
||||
install(FILES cmext.hpp COMPONENT headers DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${CMAKE_PROJECT_NAME})
|
||||
|
6
3rdparty/libcmext/cmext.cpp
vendored
Normal file
6
3rdparty/libcmext/cmext.cpp
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
#include "cmext.hpp"
|
||||
|
||||
int32_t cmext_init(int32_t i = 0) {
|
||||
return i;
|
||||
}
|
||||
|
9
3rdparty/libcmext/cmext.hpp
vendored
Normal file
9
3rdparty/libcmext/cmext.hpp
vendored
Normal file
@ -0,0 +1,9 @@
|
||||
#ifndef CMEXT_CMEXT_HPP_
|
||||
#define CMEXT_CMEXT_HPP_
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
int32_t cmext_init(int32_t i);
|
||||
|
||||
#endif
|
||||
|
@ -32,6 +32,18 @@ find_package(Qt5 COMPONENTS Core Network Gui Widgets DBus Concurrent Sql REQUIRE
|
||||
# Автоматически генерируемый заголовочный файл
|
||||
cmlib_config_hpp_generate()
|
||||
|
||||
# Подключение внешних проектов
|
||||
include(ExternalProject)
|
||||
|
||||
ExternalProject_Add(cmext
|
||||
EXCLUDE_FROM_ALL TRUE
|
||||
SOURCE_DIR ${CMAKE_SOURCE_DIR}/3rdparty/libcmext
|
||||
INSTALL_DIR ${CMAKE_BINARY_DIR}
|
||||
DOWNLOAD_COMMAND ""
|
||||
BUILD_BYPRODUCTS <INSTALL_DIR>/lib/libcmext.a
|
||||
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR> -DCMAKE_BUILD_TYPE=Release
|
||||
)
|
||||
|
||||
# Библиотека
|
||||
add_subdirectory(src/libcmex)
|
||||
|
||||
|
@ -17,6 +17,14 @@ add_dependencies(${current_target} cmex)
|
||||
target_include_directories(${current_target} PUBLIC
|
||||
$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/src/libcmex>)
|
||||
|
||||
# Зависимость от библиотеки из внешнего проекта проекта
|
||||
add_dependencies(${current_target} cmext)
|
||||
|
||||
# Добавление каталога, в который устанавливаются заголовочные файлы
|
||||
# от внешнего проекта cmext, к списку путей для поиска заголовочных файлов
|
||||
target_include_directories(${current_target} PUBLIC
|
||||
$<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/include/cmext>)
|
||||
|
||||
# Имя выходного файла для цели
|
||||
set_target_properties(${current_target}
|
||||
PROPERTIES
|
||||
@ -30,6 +38,9 @@ link_directories(${CMAKE_INSTALL_LIBDIR})
|
||||
# Сначала внутренние статические библиотеки
|
||||
target_link_libraries(${current_target} cmex_static)
|
||||
|
||||
# Библиотека из внешнего проекта cmext
|
||||
target_link_libraries(${current_target} ${CMAKE_BINARY_DIR}/lib/libcmext.a)
|
||||
|
||||
# Правила для установки
|
||||
install(TARGETS ${current_target} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
|
||||
|
||||
|
@ -2,6 +2,7 @@
|
||||
#include "config.hpp"
|
||||
|
||||
#include <iostream>
|
||||
#include <cmext/cmext.hpp>
|
||||
|
||||
#include "cmex.hpp"
|
||||
|
||||
@ -10,6 +11,7 @@ int main(int argc, char **argv) {
|
||||
std::cout << BUILD_TYPE << std::endl; // Значение из config.hpp
|
||||
std::cout << CMEX_VERSION_STR << std::endl; // Значение из config.hpp
|
||||
std::cout << cmex_init(4) << std::endl; // Функция из внутренней библиотеки
|
||||
std::cout << cmext_init(9) << std::endl; // Функция из внешней библиотеки
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user