Компиляция командной строки C ++ в Windows в скрипте Python

Идея состоит в том, чтобы скомпилировать программу на C ++. Он содержит main.cpp, printer.cpp, printer.h, scanner.cpp а также scanner.h, Эти исходные файлы имеют одну функцию печати «привет». Теперь я пытаюсь создать объектные файлы и исполняемые файлы из командной строки через скрипт Python и использую cl.exe,

Я получаю ошибку LNK2019 так что я знаю, что проблема в связи. Я посмотрел, хотя варианты, и я использую это для моего Python!

build = subprocess.Popen(['vcvarsall.bat', 'amd64_x86', '&&', 'cl',   'kernel32.lib',...[skipping some files]'uuid.lib','/I' + qtpath,'C:\\Users\\ROY_S\\Desktop\\CppMaker\\main.cpp','/ZI','/Gm','/EHsc','/MDd','/GS','/Fo'+path,'/Fe'+path+'main.exe','/link','/LIBPATH:'+qtlib,'/DEFAULTLIB:'+ qtlib+'QtMainIsar','/DEFAULTLIB:'+ qtlib+'QtCore','/DEFAULTLIB:'+ qtlib+'QtGuiIsar4','/DEFAULTLIB:'+ qtlib+'QtNetwork','/DEFAULTLIB:'+ qtlib+'QtOpenGLIsar4','/DEFAULTLIB:'+ ...[skipping...] qtlib+'QtWebKitIsar4','/INCREMENTAL','/NOLOGO','/TLBID:1','/DYNAMICBASE','/MANIFEST','/NXCOMPAT','/ERRORREPORT:PROMPT','/MACHINE:'+'X86','/OUT:'+path+'main.exe' ]  , stdout=subprocess.PIPE)

Я удалил некоторые библиотеки, чтобы их было легче читать. Я не понимаю, как мне связать все, даже после указания файлов lib в моем скрипте.

Я также могу перейти к другому решению вместо использования cl.exe, Все, что легко контролирует командную строку, у меня все в порядке.

1

Решение

В Windows я думаю, что это хорошая идея — использовать проект / решение Visual Studio и создавать его, используя MSBuild.
Файл проекта / решения может быть создан вручную или в Visual Studio.
Вы также можете создавать свойства в проекте / решении и передавать их в MsBuild (см. Документацию MsBuild).

0

Другие решения

check = subprocess.Popen(['vcvarsall.bat', 'amd64_x86', '&&',    'msbuild',Path,'/p:configuration=%s' % Configuration])

Это решает мою проблему. Вместо того, чтобы играть с cl.exe, я делаю шаблон файла vcxproj. Затем мой код добавляет исходные файлы и заголовочные файлы в файл vcxproj, и я компилирую его с помощью msbuild. Я чувствую, что это гораздо более простое решение, потому что мне не нужно заботиться об отдельных библиотеках, которые я могу добавить, и я могу просто добавить правильный лист в мой файл vcxproj.

Также см https://msdn.microsoft.com/en-us/library/ms164311.aspx

0

Visual Studio — самое простое решение, хотя если вы ДЕЙСТВИТЕЛЬНО не любите Visual Studio, вы можете получить gcc через https://www.cygwin.com/

-1