угораю с комментаторов которые пишут про гугл - зачем тогда вообще этот сайт нужен?) если бы на stack overflow так же отвечали, в гугле не было бы ответов)
Попробуйте посмотреть в подробный вывод команд make, которые выполняются при компиляции - там должен быть какой-то флаг для указания версии стандарта. Или в сами Makefile-ы. Если нет - то версия зависит от компилятора и уже его версии.
Можно еще попытаться по коду определить. Например, если переменные определяются не в начале функций, а по середине где-нибудь, то скорее всего это не уже C89. Далее можно обратить внимание не используемые хэдеры (есть ли среди наих какие-нибудь из C11).
Так а в чём проблема вызывать этот метод в главном потоке?
В доках же написано:
* Note: All callbacks in this class are executed on the main
* application thread. You should also invoke any method of this class on the main
* application thread.
Acaunt, можете создать переменную со списком библиотек на уровне директории Data, и в Core сделать что-то вроде target_link_libraries(Core ${DATA_LIBRARIES}). В таком случае чтобы переменная была видна из родительской директории надо будет ей прописать PARENT_SCROPE.