cmake: как включить/скомпилировать файлы из каталога проекта?

124
10

У меня есть эта структура каталогов:

projects/
project1/
src/
main.cpp
CMakeLists.txt
project2/
src/
file1.h
file1.cpp
test1.cpp

Каталог проектов верхнего уровня не может считаться проектом верхнего уровня, а просто набором несвязанных проектов, поэтому я не ставил бы файл CMakeLists.txt на этом уровне.

Я хочу, чтобы project1 включал файлы из project2 без указания полного пути, например:

// main.cpp
#include "file1.h"

И я также хочу, чтобы файлы реализации проекта2 были построены в проекте1.

Мне нужно, чтобы project2 не был библиотекой, но просто использовал свои файлы, как если бы они были частью проекта1.

Я использую cmake, и это файл CMakeLists.txt который я написал (он не работает):

cmake_minimum_required(VERSION 2.8)
project(project1)
add_subdirectory(src)
add_subdirectory(../../project2/src)

Даже указание полного пути к project2 не работает: ${CMAKE_CURRENT_SOURCE_DIR)/../../project2/src

Я получаю "фатальную ошибку: file1.h: нет такого файла или каталога" из make.

спросил(а) 2021-01-25T15:49:49+03:00 4 месяца, 4 недели назад
1
Решение
62

Для использования внешних файлов include это работает:

include_directories

ответил(а) 2021-01-25T15:49:49+03:00 4 месяца, 4 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема