CMake GLOB не возвращает никаких исходных файлов? - PullRequest
1 голос
/ 16 марта 2020

Я пытаюсь автоматически написать мои Make-файлы для моего проекта C ++, используя CMake с GLOB. Однако код и заголовки находятся в двух отдельных папках.

/Users/username/Coding/Major Projects/ProjectName/Backend

и

/Users/username/Coding/Major Projects/ProjectName/Terminal

Бэкэнд имеет независимый от платформы код. Просто набор исходных файлов c и c ++. А в папке «Терминал» есть некоторый код, который использует объекты, указанные в Backend, для запуска некоторых тестов на них. Причина, по которой они находятся в отдельных папках, заключается в том, что внутренний код является мультиплатформенным. Таким образом, проект XCode импортирует это и т.д. c. В папке «Терминал» есть тестовый код, потому что он единственный, кто пытается скомпилировать его в двоичный файл linux.

В любом случае, у меня есть следующий файл CMakeList.txt, который я пытаюсь создать для генерации Makefile.

cmake_minimum_required(VERSION 2.8.9)
project(terminalTest)

set(MainSource "/Users/username/Coding/Major Projects/ProjectName/Backend")
set(TerminalSource "/Users/username/Coding/Major Projects/ProjectName/Terminal")

#Bring the headers, such as Student.h into the project
include_directories(${MainSource} ${TerminalSource})

#Can manually add the sources using the set command as follows:
#set(SOURCES src/mainapp.cpp src/Student.cpp)

#However, the file(GLOB...) allows for wildcard additions:
file(GLOB SOURCES "./{${MainSource},${TerminalSource}}/*.cpp")

add_executable(terminalTest ${SOURCES})

И результат этого при запуске из CMake GUI - успешная конфигурация, но ошибка No SOURCES given to target: terminalTest, означающая, что моя команда file() не работает должным образом.

Я думаю, что это может иметь какое-то отношение к тому факту, что у меня есть пробелы в моих путях, но, похоже, это тоже не делает этого. Кстати, я помещаю этот файл в папку «Терминал» и пытаюсь выполнить сборку из Terminal / Build.

Есть ли способ отладки и посмотреть, какие источники вводит команда GLOB? Могу ли я сделать несколько каталогов GLOB, как это?

1 Ответ

2 голосов
/ 16 марта 2020

Ваш file(GLOB ...) путь выглядит неверно. Вы можете указать пути к вашим источникам отдельно в этой команде, чтобы получить все исходные файлы в обеих директориях.

file(GLOB SOURCES 
    ${MainSource}/*.cpp
    ${TerminalSource}/*.cpp
)
...