Подключение библиотеки из внешнего проекта
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()
|
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)
|
add_subdirectory(src/libcmex)
|
||||||
|
|
||||||
|
@ -17,6 +17,14 @@ add_dependencies(${current_target} cmex)
|
|||||||
target_include_directories(${current_target} PUBLIC
|
target_include_directories(${current_target} PUBLIC
|
||||||
$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/src/libcmex>)
|
$<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}
|
set_target_properties(${current_target}
|
||||||
PROPERTIES
|
PROPERTIES
|
||||||
@ -30,6 +38,9 @@ link_directories(${CMAKE_INSTALL_LIBDIR})
|
|||||||
# Сначала внутренние статические библиотеки
|
# Сначала внутренние статические библиотеки
|
||||||
target_link_libraries(${current_target} cmex_static)
|
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})
|
install(TARGETS ${current_target} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
|
||||||
|
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
#include "config.hpp"
|
#include "config.hpp"
|
||||||
|
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
#include <cmext/cmext.hpp>
|
||||||
|
|
||||||
#include "cmex.hpp"
|
#include "cmex.hpp"
|
||||||
|
|
||||||
@ -10,6 +11,7 @@ int main(int argc, char **argv) {
|
|||||||
std::cout << BUILD_TYPE << std::endl; // Значение из config.hpp
|
std::cout << BUILD_TYPE << std::endl; // Значение из config.hpp
|
||||||
std::cout << CMEX_VERSION_STR << std::endl; // Значение из config.hpp
|
std::cout << CMEX_VERSION_STR << std::endl; // Значение из config.hpp
|
||||||
std::cout << cmex_init(4) << std::endl; // Функция из внутренней библиотеки
|
std::cout << cmex_init(4) << std::endl; // Функция из внутренней библиотеки
|
||||||
|
std::cout << cmext_init(9) << std::endl; // Функция из внешней библиотеки
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user