SCons 长命令行 TEMPFILE 与 MinGW

2024-02-20

我正在尝试在 Windows 上使用 SCons 和 MinGW 从 gcc 和 gfortran 对象构建共享库,但在最终链接期间命令行太长,超过 18000 个字符。我知道我需要使用临时文件(响应文件?)来传递命令行,但我找不到让 SCons 直接执行此操作的方法。我在这个库中使用了 CMake,它在没有我干扰的情况下处理了响应文件。

SCons 似乎正在使用 CommandGeneratorAction 来生成共享库命令行。有没有办法告诉这个动作使用响应文件机制?还有另一种方法可以处理我忽略的长命令行吗?

相关征兵:

sqllib = env.SharedLibrary(target='fvssql', source=sqllib_sources, LIBS=['odbc32',])
ffelib = env.SharedLibrary(target='fvspncffe', source=ffelib_sources, LIBS=[sqllib,], LIBPATH=['.',])

fvsobjs = env.SharedObject(fvslib_sources)
fvsobjs = [obj for obj in fvsobjs if obj.get_suffix()=='.o']

fvslib = env.SharedLibrary(target='fvspnc', source=fvsobjs, LIBS=sqllib+ffelib, LIBPATH=['.',])

env.Dump() 的相关输出:

'SHLIBSUFFIX': '.dll',
'SHLINK': '$LINK',
'SHLINKCOM': <SCons.Action.CommandGeneratorAction object at 0x02DDF770>,
'SHLINKFLAGS': ['$LINKFLAGS', '-shared'],

我可以在我的环境中准备命令行模板env['SHLINKCOM']="${TEMPFILE('$SHLINK -o $TARGET ... $SOURCE')}",但这似乎很脆弱,如果可能的话我宁愿让 SCons 处理它。

我尝试使用字符串替换env['SHLINKCOM']='${TEMPFILE("%s")}' % (env['SHLINKCOM'],),但结果是一个不完整的命令行和现在的响应文件。

EDIT

我见过LongCmdLinesOnWin32 http://scons.org/wiki/LongCmdLinesOnWin32解决方法。如果可能的话,我更愿意使用 TEMPFILE、TempFileMunge、命令行间接机制。


你见过吗http://scons.org/wiki/LongCmdLinesOnWin32 http://scons.org/wiki/LongCmdLinesOnWin32?看起来在链接阶段,长命令行的确切问题已经有了答案。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SCons 长命令行 TEMPFILE 与 MinGW 的相关文章

  • 使用单个文件的 Python 日志记录(函数名、文件名、行号)

    我正在尝试了解应用程序的工作原理 为此 我将调试命令插入作为每个函数主体的第一行 目的是记录函数的名称以及向日志输出发送消息的行号 代码内 最后 由于这个应用程序由许多文件组成 我想创建一个日志文件 以便我可以更好地理解应用程序的控制流 这
  • 为神经网络打乱两个 numpy 数组

    我有两个 numpy 数组用于输入数据 X 和输出数据 y X np array 2 3 sample 1 x 16 4 dtype float sample 2 x y np array 1 0 sample 1 y 0 1 dtype
  • Keras ZeroDivisionError:整数除法或以零为模

    我正在尝试使用 Keras 和 Tensorflow 实现卷积神经网络 我有以下代码 from keras models import Sequential from keras layers import Conv2D MaxPoolin
  • Python设置1和True的解释

    在 IPython 3 交互式 shell 中 In 53 set2 1 2 True hello In 54 len set2 Out 54 3 In 55 set2 Out 55 hello True 2 是因为 1 和 True 得到
  • sy.sympify(str(表达式)) 不等于表达式

    据我了解 str将 SymPy 表达式转换为字符串并sympify将字符串转换为 SymPy 表达式 因此 我希望以下内容成立 对于合理的表达 gt gt gt sy sympify str expr expr True 我尝试过这个 确实
  • 在 PhotoImage 下调整图像大小

    我需要调整图像大小 但我想避免使用 PIL 因为我无法使其在 OS X 下工作 不要问我为什么 无论如何 因为我对 gif pgm ppm 感到满意 所以 PhotoImage 类对我来说没问题 photoImg PhotoImage fi
  • 将多索引转换为行式多维 NumPy 数组。

    假设我有一个类似于以下示例的 MultiIndex DataFrame多索引文档 http pandas pydata org pandas docs stable advanced html gt gt gt df 0 1 2 3 fir
  • 烧瓶 - 404 未找到

    我是烧瓶开发的新手 这是我在烧瓶中的第一个程序 但它向我显示了这个错误 在服务器上找不到请求的 URL 如果您输入了网址 请手动检查拼写并重试 这是我的代码 from flask import Flask app Flask name ap
  • 样本()和r样本()有什么区别?

    当我从 PyTorch 中的发行版中采样时 两者sample and rsample似乎给出了类似的结果 import torch seaborn as sns x torch distributions Normal torch tens
  • 获取 int() 参数必须是字符串或数字,而不是“Column”- Apache Spark

    如果我使用以下代码 我会收到此异常 int argument must be a string or a number not Column df df withColumn FY F when df ID substr 5 2 isin
  • 无法在我的程序中使用 matplotlib 函数

    我正在 Windows 10 中运行 Anaconda 安装 conda 版本 4 3 8 这是我尝试在 python 命令行中运行的代码 import matplotlib pyplot as plt x 1 2 3 4 y 5 6 7
  • Django Web 应用程序中的 SMTP 问题

    我被要求向使用 Django Python 框架实现的现有程序添加一个功能 此功能将允许用户单击一个按钮 该按钮将显示一个小对话框 表单以输入值 我确实编写了一些代码 显示电子邮件已发送的消息 但实际上 它没有发送 My code from
  • 同一台机器上有多个Python版本?

    Python 网站上是否有关于如何在 Linux 上的同一台计算机上安装和运行多个版本的 Python 的官方文档 我可以找到无数的博客文章和答案 但我想知道是否有 标准 官方方法可以做到这一点 或者这一切都取决于操作系统 我认为它是完全独
  • 如何让 Streamlit 每 5 秒重新加载一次?

    我必须每 5 秒重新加载 Streamlit 图表 以便在 XLSX 报告中可视化新数据 如何实现这一目标 import streamlit as st import pandas as pd import os mainDir os pa
  • 如何处理 Tkinter 中的窗口关闭事件?

    如何在 Python Tkinter 程序中处理窗口关闭事件 用户单击 X 按钮 Tkinter 支持一种称为协议处理程序 http web archive org web 20201111215134 http effbot org tk
  • 有没有办法拉伸整个显示图像以适应给定的分辨率?

    我最近一直在使用pygame制作游戏 遇到了一个小问题 基本上 我希望能够将屏幕上的整个图像 我已经传输到它的所有内容 拉伸到用户将窗口大小调整到的分辨率 我在 pygame 和堆栈溢出的文档中搜索了很多 但我似乎找不到答案 这可能吗 我的
  • 避免“散点/点/蜂群”图中的数据点重叠

    使用绘制点图时matplotlib 我想偏移重叠的数据点以使它们全部可见 例如 如果我有 CategoryA 0 0 3 0 5 CategoryB 5 10 5 5 10 我想要每一个CategoryA 0 数据点并排设置 而不是彼此重叠
  • python 日志记录替代方案 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 蟒蛇记录模块 http docs python org library logging html使用起来
  • PYTHON:从 txt 文件中删除 POS 标签

    我有以下 txt 文件 其中包含 POS 词性 http en wikipedia org wiki Part of speech tagging 每个单词的标签 不用 jj到 说 vb 我 ppss是 bedz愤怒 jj在 在 dt无与伦
  • OSError: [WinError 193] %1 不是有效的 Win32 应用程序,同时使用 CTypes 在 python 中读取自定义 DLL

    我正在尝试编写用 python 封装 C 库的代码 我计划使用 CTypes 来完成此操作 并使用 Visual Studio 来编译我的 DLL 我从一个简单的函数开始 在 Visual Studio 内的标头中添加了以下内容 然后将其构

随机推荐

  • 使用 JS 在 Google Apps 脚本文档中查找未知字符串并将其更改为大写

    我写在Fountain markdown http fountain io http fountain io 在谷歌文档中 喷泉是用来写剧本的 我想通过自动大写某些元素 打开或使用按钮等 使喷泉中的书写更加友好 这是一个格式正确的剧本 在喷
  • 哪个 django OpenID 库可与新的 Google OpenID 配合使用

    由于 Google 弃用了 OpenID 2 0https developers google com accounts docs OpenID2 https developers google com accounts docs Open
  • 如何使符号计算中的所有低值都变为零?

    如何将 SymPy 表达式中的所有低值设为零 例如我的结果是 1 0 a1 cos q1 6 12e 17 a2 sin q2 a3 sin q2 q3 a4 sin q2 q3 q4 sin q1 1 0 a2 cos q2 a3 cos
  • Python中计算二叉树的深度

    我是编程新手 正在尝试计算 Python 中二叉树的深度 我相信我的错误是因为深度是 Node 类的方法而不是常规函数 我正在尝试学习OOP并希望使用一种方法 这可能是一个新手错误 这是我的代码 class Node def init se
  • OpenCL 在线编译:从 cl::program 或 cl::kernel 获取程序集

    我正在使用 OpenCL 运行内核基准测试 我知道我可以使用 OpenCL 供应商提供的各种工具离线编译内核 即ioc64 or poclcc 问题是我得到的性能结果无法用这些工具的汇编 OpenCL 运行时开销或类似的来解释 我想看到由我
  • 我无法删除 Azure AD 门户中的本机应用程序注册

    我只想删除出于测试目的而创建的 AD 应用程序注册 我无法删除它 因为删除按钮呈灰色 在我删除另一个未使用的应用程序之前没有任何问题 有什么建议么 游戏有点晚了 但是当尝试上述步骤时 它们对我不起作用 总是被禁用 并且由于某种原因 我无法将
  • 整个计算机处于 Git 状态未跟踪文件

    我是 git 新手 我想我不小心克隆到了根目录中 当我提交一个文件 index html 时 我注意到我的整个计算机 我的桌面 我的文档等 都在未跟踪的文件中 我删除了存储库 并且想删除所有未跟踪的文件 显然不想删除计 算机中的所有内容 我
  • 在 Safari 中打开 WebView 链接

    我正在 Cocoa 中开发一个应用程序 我想知道是否有一种方法 如何使我的 webview 中单击的任何链接在 Safari 或默认浏览器 中启动 提前致谢 我自己刚刚遇到了这个问题 并通过以下方式解决了它 我的主控制器对象被设置为 Web
  • 捕获 C++ 库崩溃的一致方法

    我浏览了不同的网站 除了那些似乎不起作用的网站之外 找不到这个问题的任何答案 正如标题所示 我正在尝试找到一种方法来捕获我正在处理的库是否崩溃 我有一个 Root 类 它保存我的库中的许多管理器样式类的实例 并在其析构函数中释放这些实例 当
  • 在reactjs中悬停时显示组件[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我创建了几个带有特定内容标题的部分 我想在悬停在不同部分上方时显示一个简短的预览 有谁知道如何创建一个具有条件渲染反应组件的hover
  • 冒泡排序双向链表

    我的双向链表冒泡排序功能有问题 当我以单链接方式对节点进行排序时 仅使用 gt next 它可以工作 但我无法使其与 gt prev 指针一起使用 这是我正在使用的代码 void sort int count struct data tmp
  • 无法更新 Dynamodb 表,出现 ValidationException

    我需要仅使用分区键来更新我的 dynamodb 表 但我得到了验证异常 我创建了一个包含 3 个字段的表 id 分区键 名称 排序键 age 然后我尝试仅使用 id 更新年龄字段 尝试将年龄 30 修改为 40 这是我的代码 var AWS
  • 如何调试 gulp-sourcemaps 不执行任何操作?

    我有一个相当标准的用例gulp sourcemaps https github com floridoo gulp sourcemaps https github com floridoo gulp sourcemaps gulp src
  • SQLAlchemy 获取匹配查询的每一行并循环遍历它们

    我是 Python 和 SQLAlchemy 的新手 我一直在尝试从数据库中检索内容 并且每次都有效 但我有点不确定当 select 语句将返回多行时该怎么做 我尝试使用一些在开始 SQLAlchemy 之前有效的旧代码 但是db是一个 S
  • Google PHP API 客户端:CA 证书错误

    我正在尝试与 Google PHP API 客户端交互 但 Google 提供的证书存在问题 谷歌错误 SSL certificate problem verify that the CA cert is OK Retrying with
  • 在 Caliburn.Micro 中如何将操作绑定到嵌套的 ViewModel 方法?

    我有一个 WPF 应用程序 由 Caliburn Micro 提供支持 视图模型优先方法 有一种命令栏类型的控件 其CommandBarView xaml并绑定命令栏视图模型 命令栏虚拟机包含许多嵌套虚拟机 每个虚拟机对应一个按钮控件 所有
  • 在C中将十进制数转换为二进制数

    我正在尝试将十进制数转换为二进制数 但不知何故最终得到 随机 ASCII 符号作为输出 这是我的程序 include
  • 如何删除 GitHub 拉取请求中显示的“Continous-integration/jenkins/pr-merge”和“Continous-integration/jenkins/branch”检查?

    我为 Jenkins 安装了一个插件 它可以分解运行的每个阶段 因此 我不需要额外的两个显示支票 有什么办法可以隐藏它们吗 我能够通过安装以下插件解决这个问题 https github com jenkinsci disable githu
  • 替换字符串中的特定字符

    我想从向量中的字符串中删除特定字符 类似于查找和替换Excel 中的功能 这是我开始的数据 group lt data frame c 12357e 12575e 197e18 e18947 我只从第一列开始 我想通过删除来生成第二列e s
  • SCons 长命令行 TEMPFILE 与 MinGW

    我正在尝试在 Windows 上使用 SCons 和 MinGW 从 gcc 和 gfortran 对象构建共享库 但在最终链接期间命令行太长 超过 18000 个字符 我知道我需要使用临时文件 响应文件 来传递命令行 但我找不到让 SCo