Я пытаюсь автоматически написать мои 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
, как это?