Я использовал следующий метод для компиляции Clang для C ++ в Windows 7, и он был проверен Mysticial и другими:
- Загрузите и установите MinGW (убедитесь, что вы установиликомпилятор C ++) и поместите папку bin в вашу PATH (у меня MinGW 4.6.1 и успешно протестированы на другом компьютере с 4.6.2)
- Убедитесь, что в вашей PATH есть Python ( не 3 , у меня 2,7)
- (Необязательно: убедитесь, что в вашей переменной PATH есть Perl (я использовал ActivePerl 5.14.2 64-bit))
- Получить CMake и поместите его в свой PATH
- Перейдите на страницу LLVM-загрузки и загрузите исходный код LLVM 3.0 вместе с исходным кодом Clang.Не получайте код из SVN, он не работает с заголовками MinGW.
- Извлекайте исходные коды;У меня был источник llvm в папке с именем llvm-3.0.src на рабочем столе
- Поместите источник clang непосредственно в папку с именем «clang» (он должен называться именно так, иначе вы соберете llvm, но clang выигралв папку "tools" внутри папки с исходным кодом llvm, это должно сделать ваши каталоги похожими на:
- llvm source
- папка autoconf
- ...
- папка инструментов
- ...
- папка clang
- папка привязок
- ...
- Makefile file
- ...
- ...
- ...
- Создайте папку с именем «build» в том же каталоге, что и исходная папка llvm
- Откройте командную строку и перейдите в папку сборки
Запуститекоманда cmake -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=Release ..\llvm-3.0.src
(последний аргумент - это относительный путь к папке, в которой находится источник llvm (и источник clang в подкаталоге tools / clang))
Это будет эквивалентно команде «configure», и файлы makefile и все будет сгенерировано в папке сборки
- Это займет несколько минут
Запустите команду mingw32-make
- Это скомпилирует llvm и clang, и исполняемые файлы clang будут сгенерированы в папке build / bin
- Это, вероятно,занять длительное время.(Вы можете попытаться ускорить его, добавив параллельные сборки, опция
-j<number>
). Возможно, было бы хорошо закрыть все другие программы, чтобы ваш компьютер мог сконцентрироваться, чтобы они не мешали длительному процессу компиляции, напримерблокировка папки, в которую пишет компилятор (это случилось со мной).Я даже отключил антивирус и брандмауэр, чтобы они не пытались сканировать сгенерированные файлы и мешать им.
Время для тестирования
Создайте файл .cpp в папке build / bin (я буду использовать hello.cpp).Используйте стандартный заголовок библиотеки, чтобы убедиться, что включаемые пути и библиотеки работают.Начните с очень простой программы.
(с чего я начал:
#include <iostream>
int main() {
std::cout << "hi";
}
)
Запустите команду clang hello.cpp -std=c++0x -I"C:\MinGW\lib\gcc\mingw32\4.6.1\include\c++" -I"C:\MinGW\lib\gcc\mingw32\4.6.1\include\c++\mingw32" -Lc:/mingw/bin/../lib/gcc/mingw32/4.6.1 -Lc:/mingw/bin/../lib/gcc -Lc:/mingw/bin/../lib/gcc/mingw32/4.6.1/../../../../mingw32/lib -Lc:/mingw/bin/../lib/gcc/mingw32/4.6.1/../../.. -L/mingw/lib -lstdc++ -lmingw32 -lgcc_s -lgcc -lmoldname -lmingwex -lmsvcrt -ladvapi32 -lshell32 -luser32 -lkernel32 -lmingw32 -lgcc_s -lgcc -lmoldname -lmingwex -lmsvcrt
(- L указывает каталог для поиска библиотек, а -l указывает библиотеку для связи) (Если у вас не установлен MinGW по тому же пути, что и я, вы можете узнать пути с помощью команды "g ++ somefile.cpp -v ", чтобы заставить g ++ рассказать о том, какие параметры он использует для путей к библиотекам, библиотечных файлов и всего остального. Поиск в конце вывода для параметров -L и -l.Имена файлов .o перемежаются с -L. Clang использует многие из тех же опций, что и g ++, поэтому я буквально скопировал и вставил эту строку из вывода g ++)
Это должно скомпилировать вашу программу и создать файлс именем a.out
переименуйте a.out в a.exe или любой другой файл
- Запустите .exe
- Ваша программа должна запуститься.
Clang (3.0) по-прежнему имеет некоторые проблемы в Windows (я не знаю, есть ли эти проблемы и в Linux).Например, компиляция лямбды (которую не поддерживает clang) с -std = c ++ 0x вызовет сбой clang и выдаст диагностическую ошибку.(Мне сообщили в IRC LLVM, что это происходит потому, что в clang реализован синтаксический анализ лямбд, а не семантический анализ, то есть фаза, на которой происходит сбой (потому что они забыли отключить разбор лямбд для версии 3.0), и они уже знают об этомошибка)
Также прославленный Мистикаль любезно согласился протестировать это руководство и сделал несколько замечаний во время его тестирования:
- Заголовки Windows, похоже, работают.
- В настоящее время работает только для 32-разрядных.
- 64-битная компилируется нормально, но не собирается.
- SSE, вероятно, в порядке.([Mysticial не] проверил работающий SSE на 32-битном.)