Comments (3)
The 32KiB limit of CreateProcess is an operating system limitation. As far as I'm aware there is no general purpose way to overcome this limit. Overcoming it requires using custom param passing techniques which must be supported by the child process. The page you link to describes a way to do it if you have access to the linker source code, which is not a general-purpose solution.
The Microsoft toolchain typically supports passing args via a "response file" to overcome this limitation. Where possible, FASTBuild detects that you are using a tool (like link.exe) that supports response files and uses them if the args are > 32KiB.
What linker are you using? If you are using the MS linker, use of response files should be automatic. (If not there might be a bug - the full command line would be helpful here. (Use the private support email if you are not happy to past that info here.))
If you are using a non-Microsoft linker there are a few possibilities:
- Look at the documentation to see if it supports response files. Many linkers that emulate the MS one also support response files. We can easily add detection to FASTBuild for that.
- See if it supports some other passing mechanism. We can potentially add detection/support to FASTBuild for that.
- Use FASTBuild's Unity feature to reduce the number of objects at link time (in addition to massively speeding up your compile times)
- Create some intermediate libraries to merge your objects together, to reduce the amount of objects/libraries passed on the final link line.
from fastbuild.
I don't have the full linker command at hand, but it's something like "cmake.exe -E link msvc2013 [...]"
I discussed this problem with the main dev of the CMake Fastbuild generator, and he is already looking into response files, so I guess you can safely close this bug.
from fastbuild.
If cmake.exe supports response files on Windows, we can make sure that FASTBuild uses those when invoking it. Of course cmake.exe itself will need to make sure it uses response files when invoking link.exe to not have the same problem.
I'll close this issue for now. Let me know what comes of your discussions and if there is anything to be done on the FASTBuild side.
from fastbuild.
Related Issues (20)
- C++20 module support HOT 3
- Missing dependencies when using array as `.CompilerInputPattern` HOT 8
- Missing XML Quoting support in vcxproj generator HOT 4
- integration Distributed ThinLTO with FASTBuild HOT 7
- `-compdb` does not include commands to generate PCHs HOT 1
- Problem using variable inside #include HOT 2
- Configuration file supporting Libraby and executable HOT 2
- Visual Studio Instrumentation profiling integration? HOT 5
- ObjectList not rebuilt when PreBuildDependencies changes HOT 4
- .CompilerOptionsC option HOT 16
- How to make full use of the build server HOT 3
- FASTBuild 1.13 gives false "Missing precompiled header option Yc in PCHOptions" error when Yc is present HOT 2
- Problems with compressed source files (LNK2019 error) HOT 7
- Compilation fails with 4> clang: error: invalid Xarch argument: '-Xarch_arm64 -o', options requiring arguments are unsupported HOT 3
- fbuild <target> emits warning while there are no warnings in the cl output HOT 1
- warning LNK4042 when linking a library from several ObjectLists that reused the same PCH. HOT 2
- Limit number of cores used for linking HOT 3
- 'Exec' can't have 'ObjectList' node specified as '.ExecInput' HOT 1
- Show remaining tasks in the status line, and document it HOT 3
- -report=json produces malformed output when caching is disabled HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from fastbuild.