Сначала создадим необходимую иерархию директорий:
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.hpp
CMAKE_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
Исходный код здесь.
Спасибо, помогло.
ОтветитьУдалить