Сначала создадим необходимую иерархию директорий:
D:\PROJECTS\SIMPLE-THINGS\TRUNK\CMAKE_TEST │ CMakeLists.txt │ ├───cli │ │ CMakeLists.txt │ │ │ └───src │ main.cpp │ └───core │ CMakeLists.txt │ ├───include │ core.hpp │ └───src core.cpp core.hppCMAKE_TEST - главный каталог проекта. Библиотека находится в папке core, сама программа - в папке cli. В каждой из упомянутых папок есть файл CMakeLists.txt, описывающий их содержимое.
CMakeLists.txt в корневой директории проекта:
cmake_minimum_required(VERSION 2.6) project(CMAKE_TEST) add_subdirectory(core) add_subdirectory(cli)Минимально необходимой для сборки проекта версией CMake является 2.6, проект называется CMAKE_TEST, это имя будет использоваться для обращения к корневой папке из подпроектов. Две команды add_subdirectory, аргументом которых являются имена папок, необходимы для указания подпроектов.
Библиотека core состоит из единственного класса, имеющего следующий вид:
#ifndef _CORE_HPP_ #define _CORE_HPP_ class Core { public: const char * say(); }; #endif
##include "Core.hpp" const char * Core::say() { return "hello"; }
Файл проекта библиотеки такой:
set(SRC src/core.cpp) add_library(core ${SRC})
Первая строка — список исходников, вторая строка — команда на обработку библиотеки под названием core.
Основной класс библиотеки доступен с помощью заголовочного файла:
#ifndef CORE_HPP #define CORE_HPP #include "../src/core.hpp" #endif
Код самой программы предельно прост:
#include <iostream> #include "core.hpp" int main(int argc, char **argv) { Core core; std::cout << core.say() << std::endl; return 0; }
Особый интерес представляет CMakeLists.txt этого подпроекта:
include_directories(${CMAKE_TEST_SOURCE_DIR}/core/include) link_directories(${CMAKE_TEST_BINARY_DIR}/core) set(SRC src/main.cpp) add_executable(cli ${SRC}) target_link_libraries(cli core)Команда include_directories определяет папку, где компилятор будет искать заголовочные файлы, подключаемые с помощью include, при этом переменная CMAKE_TEST_SOURCE_DIR указывает на корневую папку проекта. link_directories определяет, где искать библиотеки для линковки, CMAKE_TEST_BINARY_DIR - директория для сборки проекта. 4-ая строка задает список исходников, add_executable говорит, что будет собираться приложение cli.exe, target_link_libraries перечисляет библиотеки, с которым его нужно слинковать. Библиотека core по умолчанию будет статической.
Для сборки в корневой папки проекта необходимо создать директорию build и в ней отдать следующие команды:
cmake .. msbuild CMAKE_TEST.sln /t:Rebuild /p:Configuration=Release
Исходный код здесь.
Спасибо, помогло.
ОтветитьУдалить