Редко пользуюсь 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;
}
Как избавится от ошибки?