Code Monkey home page Code Monkey logo

Comments (3)

ffulin avatar ffulin commented on September 27, 2024

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.

packadal avatar packadal commented on September 27, 2024

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.

ffulin avatar ffulin commented on September 27, 2024

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)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.