【发布时间】:2021-02-15 08:54:31
【问题描述】:
我正在从事一个使用许多外部库的项目。这些库是使用柯南包含的。该项目主要是为 Unix 编写的,但也需要在 Windows 上编译和运行。
我当前的问题是 Windows 默认 fopen() 为 O_TEXT,而 Unix 期望这是 O_BINARY。我有一个适用于我自己的代码的修复程序,只需在链接时包含 binmode.obj 即可将此默认值更改为 O_BINARY。
问题是这不会影响我的第三方库。谷歌搜索并没有出现太多,大多数建议似乎是基于您在哪里创建自己的包并希望添加标志,而不是在使用其他包时如何添加标志。
到目前为止我所尝试的:
- 让
binmode.obj出现在库之前,以防链接顺序很重要。没有区别。 - 已将
--env 'CL=link binmode.obj'添加到conan install,但此标志并未最终成为编译标志或链接标志的一部分。
有什么我可以尝试的建议吗?
编辑:关于“CL”无效,我错了。这是由混淆的输出引起的。但我确实观察到 CL 似乎同时适用于编译器和链接器,这使得给出什么标志有点挑战。使用“/link”前缀使其可以与编译器一起使用,但不能与链接器一起使用。
编辑 2:更多混乱...我没有意识到 CL 值的语法是:"<compile flags> /link <link flags>"。但是,它影响了编译,但不影响链接。所以这个环境变量显然不能用来让柯南为基于自动工具的包添加一个链接器标志。
【问题讨论】:
标签: visual-c++ conan