2016-07-29 2 views
3

Мы работаем с конкретным компилятором, который называется Cadul. У этого есть свои собственные библиотеки, цели и т. Д. Проблема заключается в том, что CMake не поддерживает его в отличие от таких «стандартных» компиляторов, как GNU, Intel, Clang и т. Д.Представьте новый компилятор для CMake

Во-первых, я думал использовать кросс-компиляцию, работа, так как хост и целевые платформы одинаковы.

Затем я просмотрел Модули, где я нашел директорию с именем «Компилятор», которая содержит много файлов «.cmake», указанных для каждого компилятора и каждого разрешенного языка. Я попытался заменить слово «GNU» на «Cadul» и надеялся увидеть любые изменения, такие как «Идентификатор компилятора CXX - это Cadul ...». Но этого не произошло.

Затем я просто удалил весь каталог «Модули» от cmake и надеялся увидеть, что он больше не работает. Удивительно.

Так кто-нибудь когда-либо интегрировал новый компилятор в Cmake? С его собственными функциями и т. Д.

+0

Вы можете использовать файл 'toolchain.txt', посмотрите его в документации cmake. –

+0

'Проблема в том, что CMake не поддерживает его' - Что вы имеете в виду? Предоставляет ли CMake неправильные параметры вашему компилятору? Или что? – Tsyvarev

+0

'cmake -DCMAKE_CXX_COMPILER =/path/to/cadul ../' что это делает? –

ответ

0

Похоже, что это было рекомендовано в комментариях, но никто еще не сговорил его на ответ.

Вы можете выбрать компилятор, добавив следующие строки в CMakeLists.txt (source):

SET(CMAKE_C_COMPILER /path/to/c/compiler) 
SET(CMAKE_CXX_COMPILER /path/to/cpp/compiler) 

Если вам необходимо настроить дополнительно, с помощью набора инструментов файлов работает хорошо. В документации есть несколько примеров: here.

0

Да, я сделал это раньше. Но вам нужно намного больше, чем просто установить путь к компилятору (поскольку CMake попытается идентифицировать этот компилятор, а затем - поскольку он неизвестен CMake - вызовет ошибку).

Пример реализации нового «компилятор» можно найти в моем ответе здесь:

Это показывает enable_language(FOO) пример, который может быть заменен enable_language(Cadul).

Смежные вопросы