Добавить цель кросс-компиляции в существующий проект CMake без использования ExternalProject_Add - PullRequest
0 голосов
/ 03 мая 2020

Хорошо, у меня есть существующий проект, который компилирует код, создает исполняемые файлы, и все отлично работает (как на Linux, так и на Windows).

Теперь ... Я хочу добавить другой исполняемый файл в мой проект, но разница в том, что я хочу кросс-компилировать этот исполняемый файл. Мы используем Clang для всего, поэтому мы можем передать --target в качестве флага компилятора для этой новой цели, и это работает (т.е. код компилируется для цели, которую я хочу).

Проблема с компоновщиком. Когда я нахожусь на Windows, все становится ужасно, потому что цель - x86_64-elf, и поэтому link.exe не может использовать это. Если мы передадим -fuse-ld = lld, он будет проигнорирован, поскольку CMake уже установит это в link.exe. CMake также добавляет кучу Windows speci c нежелательных библиотек, и, похоже, нет способа отключить этот материал.

Есть ли способ добавить цель и дать это определенная c цепочка инструментов, или что-то подобное с CMake без необходимости использовать ExternalProject_Add для поддержки кросс-компиляции определенной c цели. Это то, как мы делали это раньше, и это прекрасно работает, но у этого подхода много недостатков. Я понял, я бы спросил.

1 Ответ

0 голосов
/ 03 мая 2020

Вам следует рассмотреть возможность использования ниндзя в качестве системы сборки в сочетании с cmake и clang. Это может помочь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...