@sitev_ru
sitev.ru - мой блог ...

Как подключить либу к своему проекту?

Редко пользуюсь CMake. Вроде всё просто. Но тут вдруг вылезла ошибка, с которой не могу справиться:

CMake Error at CMakeLists.txt:6 (add_subdirectory):
add_subdirectory not given a binary directory but the given source
directory "C:/projects/cmake/foo/src" is not a subdirectory of
"C:/projects/cmake/app/src". When specifying an out-of-tree source a
binary directory must be explicitly specified.


Библиотека foo лежит в той же папке, что и приложение app. Ошибка исчезает, если поместить библиотеку внутрь app/src. Структура каталогов такая:

|-- app/src
|-- foo/src

В папке app/src лежат файлы

CMakeLists.txt:

cmake_minimum_required(VERSION 2.8) 
project(hello_world)				
set(SOURCE_EXE main.cpp)
include_directories(../../foo/src)
add_executable(main ${SOURCE_EXE})
add_subdirectory(../../foo/src)
target_link_libraries(main foo)


main.cpp:

#include "foo.h"
int main(int argc, char** argv)
{
	hello_world();
	return 0;
}


В папке foo/src лежат файлы

CMakeLists.cpp:

cmake_minimum_required(VERSION 2.8)
project(foo)				
set(SOURCE_LIB foo.cpp)		
add_library(foo STATIC ${SOURCE_LIB})


foo.h:

void hello_world();

foo.cpp:

#include <iostream>
void hello_world()
{
	std::cout << "Hello, World!" << std::endl;
}


Как избавится от ошибки?
  • Вопрос задан
  • 1481 просмотр
Решения вопроса 1
tsarevfs
@tsarevfs Куратор тега C++
C++ developer
https://stackoverflow.com/a/15570165/1762922
Нужно явно указать бинарную директорию вторым параметром add_subdirectory (относительно бинарной директории проекта) для библиотеки, если она не лежит в папке с основным проектом.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы