【问题标题】:Command line compiling of C++ in Windows in Python script在 Python 脚本中在 Windows 中命令行编译 C++
【发布时间】:2016-05-22 12:15:23
【问题描述】:

这个想法是编译一个 C++ 程序。它包含main.cppprinter.cppprinter.hscanner.cppscanner.h。这些源文件有一个功能 print "hello"。现在我正在尝试通过 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。任何可以轻松控制命令行的东西我都可以接受。

【问题讨论】:

    标签: python c++ compilation linker cl.exe


    【解决方案1】:

    在 Windows 中,我认为使用 Visual Studio 项目/解决方案并使用 MsBuild 构建它是个好主意。 可以手动或在 Visual Studio 中创建项目/解决方案文件。 您还可以在项目/解决方案中创建属性并在 MsBuild 中传递它们(请参阅 MsBuild 文档)

    【讨论】:

      【解决方案2】:
      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

      【讨论】:

        【解决方案3】:

        Visual Studio 是最简单的解决方案,但如果你真的不喜欢 Visual Studio,你可以通过 https://www.cygwin.com/ 获得 gcc

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2023-03-21
          • 1970-01-01
          • 2012-05-31
          • 1970-01-01
          • 2014-12-04
          • 2019-05-13
          • 2016-01-01
          • 2020-05-14
          相关资源
          最近更新 更多