Eclipse, cmake, Windows, MingW - Какой генератор Makefile? - PullRequest
5 голосов
/ 09 августа 2011

Какая разница в Windows с cmake, eclipse и MingW, если я выберу «Eclipse MingW Makefile» или «Eclipse Unix Makefile»?

С MingW, я всегда получаю ошибку с «sh.exe» (которая исчезает, если я снова нажимаю «Конфигурировать»), а с Unix мне всегда приходится указывать windres вручную, потому что cmake не может его найти.

Имеет ли это какое-то значение для Eclipse или чего-то еще?

Оба сгенерированных файла Makefile работают с Eclipse и MingW и компилируют мой проект.

Какой Makefile мне выбрать? И почему?

Ответы [ 2 ]

7 голосов
/ 14 сентября 2011

Это действительно беспорядок.

CMake имеет несколько различных генераторов Makefile в Windows: MSYS, MinGW, NMake и Unix. Генератор CDT работает поверх генераторов Makefile: и , создавая проект Eclipse для вас. В настоящее время генератор CDT поддерживает только MinGW, NMake и Unix.

Разница между ними заключается в том, кто "делает" аромат, который он использует. MinGW, MSYS и Unix - все варианты GNU make (в данном контексте Unix означает «Cygwin»). Разница между ними в основном связана с выполнением команд , более конкретно, какая оболочка используется для выполнения команд. GNU make будет очень стараться использовать «sh.exe» вместо «cmd.exe», и, как правило, в этом случае что-то идет не так: наличие команды в Makefile, которая предполагает подробности о том, какая оболочка используется для выполнения. Другая проблема при выборе GNU make flavour заключается в том, чтобы выяснить, какие стандартные утилиты Unix доступны (sed / grep / etc). Одна примечательная деталь: если GNU make использует cmd.exe для выполнения команд, он не будет поддерживать сборки Parallell.

Если вы используете Makeix-файлы Unix, CMake будет считать, что вы делаете Cygwin с полной эмуляцией Unix.

Также убедитесь, что вы действительно запускаете "правильную" команду make. Если вы сгенерировали файлы Makefile Unix, но сначала в вашей переменной PATH используется MinGW make, то ввод «make» в дереве сборки может привести к странным ошибкам.

Но по поводу вашего вопроса: это действительно не имеет значения, пока работает.

3 голосов
/ 14 сентября 2011

cmake -G"MSYS Makefiles" очень помогает при компиляции для MinGW

...