Merge pull request #109 from microsoft/docs
Add additional documentation to the repo
This commit is contained in:
Коммит
72ecf0422b
|
@ -0,0 +1,72 @@
|
|||
| Repository | GitHub URL | Prerequisites (commands to run in terminal before using Makefile Tools) | Extension settings | Notes | Works? (Y/N) |
|
||||
|--|--|--|--|--|--|
|
||||
| 8cc | [https://github.com/rui314/8cc.git](https://github.com/rui314/8cc.git) | | | | Yes |
|
||||
| Apache Thrift | [https://github.com/apache/thrift.git](https://github.com/apache/thrift.git) | ./bootstrap.sh && ./configure | | always-make is long (triggers reconfigure) | Yes |
|
||||
| ARMmbedTLS | [https://github.com/remonbonbon/makefile-example.git](https://github.com/remonbonbon/makefile-example.git) | | | | Yes |
|
||||
| async-profiler | [https://github.com/jvm-profiling-tools/async-profiler.git](https://github.com/jvm-profiling-tools/async-profiler.git)| | | | Yes |
|
||||
| Bitcoin core integration/staging tree | [https://github.com/bitcoin/bitcoin.git](https://github.com/bitcoin/bitcoin.git) | | | always-make is long (triggers reconfigure) | Yes |
|
||||
| BusyBox | [https://github.com/mirror/busybox.git](https://github.com/mirror/busybox.git)| | | [https://github.com/microsoft/vscode-makefile-tools/issues/92](https://github.com/microsoft/vscode-makefile-tools/issues/92) | Yes |
|
||||
| CircuitPython | [https://github.com/adafruit/circuitpython](https://github.com/adafruit/circuitpython)| | Root folder board configuration<br> "makefile.configurations": \[<br> {<br> "name": "mpy-cross",<br> "makeArgs": \[<br> "-C mpy-cross",<br> \]<br> },<br> {<br> "name": "circuitplayground\_express",<br> "makeArgs": \[<br> "-C ports/atmel-samd",<br> "BOARD=circuitplayground\_express"<br> \]<br> },<br> {<br> "name": "feather\_m0\_basic",<br> "makeArgs": \[<br> "-C ports/atmel-samd",<br> "BOARD=feather\_m0\_basic"<br> \]<br> }<br> \]<br>}<br><br>Subfolder ports board configuration<br>"makefile.configurations": \[<br> {<br> "name": "circuitplayground\_express",<br> "makeArgs": \["BOARD=circuitplayground\_express"\]<br> }<br> \] | Build guide: https://learn.adafruit.com/building-circuitpython/build-circuitpython<br>Configurations shared for building from the root or opening a ports subdirectory | Yes |
|
||||
| clib | [https://github.com/clibs/clib](https://github.com/clibs/clib) | | | | Yes |
|
||||
| c-lightning | [https://github.com/ElementsProject/lightning.git](https://github.com/ElementsProject/lightning.git) | ./configure | | always-make is long (triggers reconfigure) | Yes |
|
||||
| Cmake | [https://github.com/Kitware/CMake.git ](https://github.com/Kitware/CMake.git%C2%A0) | ./bootstrap | | doesn't detect launch targets because the linker commands are too cryptic, with or without V=1 | Yes |
|
||||
| CPython | [https://github.com/python/cpython.git](https://github.com/python/cpython.git)| ./configure || | Yes |
|
||||
| ctypes.sh | [https://github.com/taviso/ctypes.sh.git](https://github.com/taviso/ctypes.sh.git) | ./autogen.sh && ./configure | | | Yes |
|
||||
| CURL | [https://github.com/curl/curl.git](https://github.com/curl/curl.git) | autoreconf -fiv && ./configure | | configure takes very long (even with always-make or buildLog workarounds)<br><br>https://github.com/microsoft/vscode-makefile-tools/issues/93 | Yes |
|
||||
| dpdk | [https://github.com/DPDK/dpdk.git](https://github.com/DPDK/dpdk.git)| | | | No. Doesn't work because make calls into meson, ninja which don't provide useful output to parse |
|
||||
| dtwmcmd | [https://github.com/cdesktopenv/dtwmcmd.git](https://github.com/cdesktopenv/dtwmcmd.git) | /.configure | | | Yes |
|
||||
| duktape | [https://github.com/svaarala/duktape.git](https://github.com/svaarala/duktape.git) | | | | Yes |
|
||||
| Embedded Makefile Flow | [https://github.com/davepfeiffer/embedded-makefile-flow.git](https://github.com/davepfeiffer/embedded-makefile-flow.git) | | | | Yes |
|
||||
| ffmpeg | [https://github.com/FFmpeg/FFmpeg.git](https://github.com/FFmpeg/FFmpeg.git) | ./configure | | | | Yes |
|
||||
| FIDO | [https://github.com/FidoProject/Fido.git](https://github.com/FidoProject/Fido.git)| | | minor issue (launch target finds an object file, not binary, for dryrun):<br>https://github.com/microsoft/vscode-makefile-tools/issues/94 | Yes |
|
||||
| FreeBSD | [https://github.com/freebsd/freebsd.git](https://github.com/freebsd/freebsd.git)| | | [https://github.com/microsoft/vscode-makefile-tools/issues/95](https://github.com/microsoft/vscode-makefile-tools/issues/95) | No. BSD make syntax not yet supported |
|
||||
| gcc | [https://github.com/gcc-mirror/gcc.git](https://github.com/gcc-mirror/gcc.git) | ./configure, set target to "all" specifically for more complete results | | | Yes |
|
||||
| Git | [https://github.com/git/git.git](https://github.com/git/git.git) | ./configure | | | Yes |
|
||||
| Google AFL | [https://github.com/google/AFL.git](https://github.com/google/AFL.git)| | | | Yes |
|
||||
| Google Protocol Buffers | [https://github.com/protocolbuffers/protobuf.git](https://github.com/protocolbuffers/protobuf.git) | ./autogen.sh && ./configure | | | Yes |
|
||||
| Greenplum Database (GPDB) | [https://github.com/greenplum-db/gpdb.git](https://github.com/greenplum-db/gpdb.git) | ./configure --without-readline --without-zstd | | always-make is long (triggers reconfigure) | Yes |
|
||||
| imgui | [https://github.com/ocornut/imgui.git](https://github.com/ocornut/imgui.git)| | | Create one wrapping makefile in root:<br>all:<br> $(MAKE) -C ./examples/example\_sdl\_metal/<br> $(MAKE) -C ./examples/example\_glfw\_metal/<br> $(MAKE) -C ./examples/example\_glfw\_opengl2/<br> $(MAKE) -C ./examples/example\_null/<br> $(MAKE) -C ./examples/example\_glfw\_opengl3/<br> $(MAKE) -C ./examples/example\_emscripten\_opengl3/<br> $(MAKE) -C ./examples/example\_sdl\_opengl2/<br> $(MAKE) -C ./examples/example\_glut\_opengl2/<br> $(MAKE) -C ./examples/example\_sdl\_opengl3/<br><br>Change \` back tick with shell command in many of these leaf makefiles. Example:<br># CXXFLAGS += \`sdl2-config --cflags\`<br> CXXFLAGS += $(shell sdl2-config --cflags) | Yes |
|
||||
| Jemalloc | [https://github.com/jemalloc/jemalloc.git](https://github.com/jemalloc/jemalloc.git) | ./autogen.sh && ./configure | | [https://github.com/microsoft/vscode-makefile-tools/issues/96](https://github.com/microsoft/vscode-makefile-tools/issues/96)| Yes |
|
||||
| Lbrycrd | [https://github.com/lbryio/lbrycrd.git](https://github.com/lbryio/lbrycrd.git) | ./autogen.sh && ./configure --with-incompatible-bdb | The build needs V=1 to produce useful output for the extension.<br>Always-make is slow (triggers reconfigure). | | Yes |
|
||||
| libass | [https://github.com/libass/libass.git](https://github.com/libass/libass.git) | ./autogen.sh && ./configure | | [https://github.com/microsoft/vscode-makefile-tools/issues/96](https://github.com/microsoft/vscode-makefile-tools/issues/96) | Yes |
|
||||
| libav | [https://github.com/libav/libav.git](https://github.com/libav/libav.git) | ./configure | | [https://github.com/microsoft/vscode-makefile-tools/issues/97](https://github.com/microsoft/vscode-makefile-tools/issues/97) | Yes |
|
||||
| libsvm | [https://github.com/cjlin1/libsvm.git](https://github.com/cjlin1/libsvm.git) | | | | Yes |
|
||||
| libtommath | [https://github.com/libtom/libtommath.git](https://github.com/libtom/libtommath.git)| | | | Yes |
|
||||
| libtorrent | [https://github.com/rakshasa/libtorrent.git](https://github.com/rakshasa/libtorrent.git) | ./autogen.sh && ./configure | | | Yes |
|
||||
| linux kernel | [https://github.com/torvalds/linux](https://github.com/torvalds/linux) | make distclean defconfig clean | | Always-make may trigger reconfigure for some linux kernel setups.<br>When make is invoked by the exension (during configure or build) it may wait for user input indefiniely: watch for timeout bottom right popup.<br> | Yes |
|
||||
| lk | [https://github.com/littlekernel/lk.git](https://github.com/littlekernel/lk.git) | | makefile.configurations.makeArgs: PROJECT=armemu-test | build.log has no commands, it's too cryptic even if V=1. dryrun doesn't have this problem.<br>dryrun has very long lines that makes parsing slow. Disable MAKECONFIGHEADER in make/macros.mk to fix. | Yes |
|
||||
| lz4 | [https://github.com/lz4/lz4.git](https://github.com/lz4/lz4.git) | | | | Yes |
|
||||
| make | [https://github.com/mirror/make.git](https://github.com/mirror/make.git) | ./bootstrap && ./configure | | always-make is long (triggers reconfigure) | Yes |
|
||||
| Mesa 3d | [https://gitlab.freedesktop.org/mesa/mesa.git](https://gitlab.freedesktop.org/mesa/mesa.git) | NOCONFIGURE=1 ./autogen.sh && ./configure --enable-llvm | | always-make is long (triggers reconfigure) | Yes |
|
||||
| micropython | [https://github.com/micropython/micropython.git](https://github.com/micropython/micropython.git) | | | Create wrapper makefile in the root folder:<br>all:<br>$(MAKE) -C ./mpy-cross<br>$(MAKE) submodules deplibs -C ./ports/unix<br>$(MAKE) -C ./ports/unix<br>$(MAKE) submodules -C ./ports/stm32<br>$(MAKE) -C ./ports/stm32<br>Needs a real build before the dryrun invoked by the configure (various resources are needed even by the dryrun)<br> | Yes |
|
||||
| Mono | [https://github.com/mono/mono.git](https://github.com/mono/mono.git) | ./autogen.sh && ./configure | | Can't use the build log because we don't support yet dolt (see split-fsharp.c). Dryrun produces useful output though.<br>https://github.com/microsoft/vscode-makefile-tools/issues/99<br>Always-make takes long (triggers reconfigure).| Yes |
|
||||
| Nano | [https://github.com/madnight/nano.git](https://github.com/madnight/nano.git) | ./autogen.sh && ./configure | | The build log is cryptic even with V=1 and the extension can't parse it. The dryrun log is fine though. | Yes |
|
||||
| NetBSD | [https://www.netbsd.org/](https://www.netbsd.org/)| | | [https://github.com/microsoft/vscode-makefile-tools/issues/95](https://github.com/microsoft/vscode-makefile-tools/issues/95) | No. BSD make syntax not yet supported |
|
||||
| Node | [https://github.com/nodejs/node.git](https://github.com/nodejs/node.git) | ./configure && /usr/bin/python3.7 tools/gyp\_node.py -f make | makefile.configurations.makeArgs: "BUILDTYPE=Debug -C out " | |Yes |
|
||||
| OpenBSD | [https://www.openbsd.org/](https://www.openbsd.org/) | | | [https://github.com/microsoft/vscode-makefile-tools/issues/95](https://github.com/microsoft/vscode-makefile-tools/issues/95) | No. BSD make syntax not yet supported |
|
||||
| openh264 | [https://github.com/cisco/openh264.git](https://github.com/cisco/openh264.git)| | | for build log, V=1 is more cryptic than without | Yes |
|
||||
| PCapPlusPlus | [https://github.com/seladb/PcapPlusPlus.git](https://github.com/seladb/PcapPlusPlus.git) | Various OS specific configure scripts in the root | | The build output is very cryptic even with v=1 | Yes |
|
||||
| PHP | [https://github.com/php/php-src.git](https://github.com/php/php-src.git) | ./buildconf && ./configure | | | Yes |
|
||||
| PostgresSQL | [https://github.com/postgres/postgres.git](https://github.com/postgres/postgres.git) | ./configure | | Headers squiggles without a real build before configure.<br>One file compiled many times differently (src/common/ip.c) during the all or default makefile target. | Yes |
|
||||
| qemu | [https://github.com/qemu/qemu.git](https://github.com/qemu/qemu.git) | ./configure | | | Yes |
|
||||
| Recommender | [https://github.com/GHamrouni/Recommender.git](https://github.com/GHamrouni/Recommender.git) | | | | Yes |
|
||||
| Redis | [https://github.com/redis/redis.git](https://github.com/redis/redis.git)| | | | Yes |
|
||||
| Sample Makefile for C++ | [https://github.com/remonbonbon/makefile-example.git](https://github.com/remonbonbon/makefile-example.git) | | | | Yes |
|
||||
| scummvm | [https://github.com/scummvm/scummvm.git](https://github.com/scummvm/scummvm.git) | ./configure --disable-all-engines --enable-engine=director --enable-asan | |the build log has no compilation/linker commands (with or without V=1) dryrun works fine | Yes |
|
||||
| semver.c | [https://github.com/h2non/semver.c.git](https://github.com/h2non/semver.c.git) | | | | Yes |
|
||||
| SerenityOS | [https://github.com/SerenityOS/serenity.git](https://github.com/SerenityOS/serenity.git) | | Makefile not in root:<br>Define makefile.configurations.makefilePath to "./Base/home/anon/Source/little/Makefile" and define makefile.configurations.makeArgs to \["-C ./Base/home/anon/Source/little"\] | | Yes |
|
||||
| sled | [https://github.com/shinyblink/sled.git](https://github.com/shinyblink/sled.git) | | | | Yes |
|
||||
| Strace | [https://github.com/strace/strace.git](https://github.com/strace/strace.git) | ./bootstrap && ./configure | | build log cryptic even with V=1 | Yes |
|
||||
| swig | [https://github.com/swig/swig.git](https://github.com/swig/swig.git) | autogen and configure | | Always-make causes hang<br>https://github.com/microsoft/vscode-makefile-tools/issues/98 | Yes |
|
||||
| Tinyvm | [https://github.com/jakogut/tinyvm.git](https://github.com/jakogut/tinyvm.git)| | | | Yes |
|
||||
| TscanCode | [https://github.com/Tencent/TscanCode.git](https://github.com/Tencent/TscanCode.git)| | Makefile not in root, set makefile.configurations.makefilePath to "./trunk/Makefile"<br>and makefile.configurations.makeArgs" to \["-C ./trunk"\]| | Yes |
|
||||
| Tundra | [https://github.com/deplinenoise/tundra.git](https://github.com/deplinenoise/tundra.git) | | | | Yes |
|
||||
| ucx | [https://github.com/openucx/ucx.gitk](https://github.com/openucx/ucx.gitk) | ./auogen.sh && ./configure --disable-numa | | always-make very long (triggers reconfigure) | Yes |
|
||||
| UPX | [https://github.com/upx/upx.git](https://github.com/upx/upx.git)| | | | Yes |
|
||||
| vim | [https://github.com/vim/vim.git](https://github.com/vim/vim.git)| | | | Yes |
|
||||
| VLC | [https://github.com/videolan/vlc.git](https://github.com/videolan/vlc.git) | ./bootstrap && ./configure | | always-make long (triggers reconfigure).<br>the build log is offering limited informaion, needs dolt support. Dryrun output is fine.<br>https://github.com/microsoft/vscode-makefile-tools/issues/99 | Yes |
|
||||
| vlfeat | [https://github.com/vlfeat/vlfeat.git](https://github.com/vlfeat/vlfeat.git)| | | | Yes |
|
||||
| Wine | [https://github.com/wine-mirror/wine.git](https://github.com/wine-mirror/wine.git) | ./configure --without-x --without-freetype | | | Yes |
|
||||
| wiredtiger | [https://github.com/wiredtiger/wiredtiger.git](https://github.com/wiredtiger/wiredtiger.git) | ./autogen.sh && ./configure | | always-make very long (triggers reconfigure) | Yes |
|
||||
| ZFS | [https://github.com/openzfs/zfs.git](https://github.com/openzfs/zfs.git) | ./autogen.sh && ./configure | | The build ouput is too cryptic (no commands) even with V=1<br>Bogus object launch target identified:<br>https://github.com/microsoft/vscode-makefile-tools/issues/94 | Yes |
|
||||
| zinit | [https://github.com/zdharma/zinit.git](https://github.com/zdharma/zinit.git) | zmodules/configure | makefile.configurations.makefilePath: "zmodules/makefile"<br>makefile.configurations.makeArgs: \["V=1", "-C zmodules"\] | The output of the build is useless unless V=1 (dryrun output is fine without) | Yes |
|
|
@ -0,0 +1,117 @@
|
|||
# Makefile Tools: Troubleshooting
|
||||
|
||||
This document describes reasons and workarounds for errors you might run into when using the Makefile Tools extension.
|
||||
|
||||
If you see header squiggles:
|
||||
|
||||
- Verify headers are not missing from the expected location
|
||||
- Some headers may be automatically generated by a build, so squiggles are expected on clean repository
|
||||
- Verify include paths
|
||||
- Check the Makefile Tools output tab or makefile.extensionLog to see which include paths are parsed and sent by Makefile Tools
|
||||
- Then check the C/C++ output tab and diagnostics channel to see which include paths are received by the C++ extension
|
||||
|
||||
If you see language squiggles:
|
||||
|
||||
- Verify (with makefile.loggingLevel set to "Verbose" or "Debug") in the output channel or in the makefile.extensionLog what are the compiler switches that Makefile Tools parses from the original compiler command line. These need to match the compiler switches from C/C++ output and diagnostic channels, with C\_Cpp.loggingLevel set to "Debug"
|
||||
|
||||
Various issues may happen if the project:
|
||||
|
||||
- Uses parallel execution (interleaved output may cause wrong current paths to be computed, resulting in IntelliSense missing for files registered under the wrong path)
|
||||
- Experiments with -j 1, --output-sync=recurse (and ignore the timeout popup) don't always work
|
||||
- Invokes recursive make calls (paths may be incorrect)
|
||||
- Silences the output via various directives (so that V=1 doesn't display commands, or directories operations are hidden, etc.)
|
||||
- Executes terminal commands embedded in the compiler/linker commands via backtick (see mono repository: cordxtra.c). Example: CXXFLAGS += \`sdl2-config --cflags`
|
||||
- The extension will invoke on the fly these commands to extract their output: [https://github.com/microsoft/vscode-makefile-tools/issues/81](https://github.com/microsoft/vscode-makefile-tools/issues/81)
|
||||
- Until the above work item is implemented, the users need to apply some workarounds in their repositories: the backtick constructs should be replaced with the shell command syntax like:
|
||||
|
||||
CXXFLAGS += $(shell sdl2-config –cflags)
|
||||
|
||||
- If the above workaround is missing, the extension is still able to handle the following most commonly found backtick pattern:
|
||||
- \`test –f 'cord/cordxtra.c' || echo './'`cord/cordxtra.c
|
||||
|
||||
makefile.ignoreDirectoryCommands behavior:
|
||||
|
||||
- Defaults to True (when we look only at what make prints from the -C argument or when make knows it changes directory)
|
||||
- True will miss any target-specific defined operations like cd, pushd, popd and the extension may calculate a wrong current path, which can result in can result in IntelliSense information being associated to a file URL that does not point to the original source file.
|
||||
- This is rare, which is why True is default.
|
||||
|
||||
Dryrun behavior:
|
||||
|
||||
- If repository is clean (no previous build was run, or a clean was run before configure):
|
||||
- dryrun includes all source files even if --always-make is missing
|
||||
- automatically generated headers may be missing, causing squiggles
|
||||
- a dryrun after clean may not be able to provide IntelliSense for those source files that are discoverable by the build only after other portions of the project were built for real
|
||||
- If a build was done before configure:
|
||||
- dryrun may provide data only for out-of-date files, unless --always-make is used
|
||||
- Headers and other resources are present
|
||||
- A dryrun on clean, a dryrun after a build, and a real build can all produce a different set of source files for IntelliSense and different build/launch targets. Each operation, in the context of how each code base is setup, produces a different build log (even in the Terminal, outside of Makefile Tools)
|
||||
|
||||
--always-make behavior:
|
||||
|
||||
- If present, ensures all data is available but may cause unwanted targets to be run. This might result in losing a previously configured state (linux kernel) or an infinite dryrun (swig on GitHub)
|
||||
- Special note for swig: the configure target is written in the Makefile in such a way that it always runs again if it fails, which it does when run via --always-make (versus via ./configure in terminal). In this case we don't even get a timeout popup becaused the log keeps writing new paragraphs indefinitely.
|
||||
- If absent, the dryrun can't get complete info without workarounds like crafting a special target to 'touch' (mark as out of date) the right things and running this special target before configure. But this would cause an unwanted rebuild of up-to-date sources when a real build is done.
|
||||
|
||||
If a dryrun is too long (mono, curl, zgs....):
|
||||
|
||||
- Try removing –always-make and save a dryrun log after a clean (so that all files are seen without –aways-make)
|
||||
- Point makefile.buildLog to a build log instead of using dryrun
|
||||
- Example where a build log is needed: when make invokes libtool, because the output from libtool (which is run for real during a build) is richer than the output of make dryrun which is just printing the command of how libtool is invoked.
|
||||
- Known issue: even if a build log is given to avoid a make run, sometimes the make invocation for targets (which currently happens live, doesn't read from a log) is still very long (example: curl repository). Tracked by [https://github.com/microsoft/vscode-makefile-tools/issues/93](https://github.com/microsoft/vscode-makefile-tools/issues/93).
|
||||
|
||||
If the repository needs any special commands before make is successful:
|
||||
|
||||
- Write any commands (./configure, ./bootstrap, etc...) in a script and point to it via **makefile.preconfigureScript**
|
||||
- In the script, we recommend you concatenate all commands into one line, separated by && (for better return code analysis)
|
||||
- From the Command Pallette, run the **Makefile: Pre-Configure** command once before configuring your project.
|
||||
- If you need this every time, set **makefile.alwaysPreConfigure** to true
|
||||
|
||||
If there is no Makefile in the root:
|
||||
|
||||
- Point **makefile.makefilePath** or makefile.configurations.makefilePath to your Makefile. Depending how the makefile is written and how paths are defined, you may need to ask make to run from that folder of the makefile instead of from the root, in which case you need to define makefile.configurations.makeArgs to include the switch "-C".
|
||||
- Manually activate the extension by either reloading the window or running any Makefile Tools command (like Configure) from the Command Palette
|
||||
|
||||
Launch targets missing:
|
||||
|
||||
- If there are launch targets that you expected to be found but are missing, try building first.
|
||||
- Before building, the extension only sees the output file of a link command and it will create a launch target with running that output file from the location where it is built and without passing any arguments. The output file does not have to exist in order to be included in launch targets list.
|
||||
- But if you expected to see a particular binary being run with some arguments, then the makefile must contain a target which invokes that binary and the binary should be present at the build location
|
||||
- it's possible to include in the list libraries/objects instead of executables, when there is no obvious switch that indicates that the linker is not creating an executable. Workitem [https://github.com/microsoft/vscode-makefile-tools/issues/94](https://github.com/microsoft/vscode-makefile-tools/issues/94) will make sure we correctly identify only executable launch targets.
|
||||
|
||||
If you see a squiggle at the beginning of a source file with the error message "command-line error: language modes specified are incompatible":
|
||||
|
||||
- That is usually a symptom of the file being missing from the dryrun output, the extension finds no compilation command to parse and does not have any information to send to CppTools, in which case the C++ extension defaults to tag parser.
|
||||
- The same root cause may also manifest as headers and defines squiggles (instead of incompatible language modes) throughout a source file whose URL is not associated with any information sent to CppTools
|
||||
- Both symptoms are accompanied by the following message in the output channel: "Configuration for file was not found. CppTools will set a default configuration."
|
||||
|
||||
If your Build targets list is too long:
|
||||
|
||||
- Use **makefile.phonyOnlyTargets** to filter out targets that the Makefile explicitly defines as Phony
|
||||
|
||||
Watch out for tricky lines in dryrun/build logs that may cause crashes or hangs when the extension parses content:
|
||||
|
||||
- many dashes in a row (---------------------) causes hang=infinite recursion according to regexp101.com
|
||||
- LK repository dryrun has 6000 char lines and many such lines in a row, each of them is very slow (takes hours)
|
||||
- Tip: disable MAKECONFIGHEADER in make/macros.mk, to avoid the enormous echo commands from being printed
|
||||
- This can be done under a make flag that can be tied to makefile.configurations.makeArgs to only avoid the echos when in dryrun mode
|
||||
|
||||
How to use Makefile Tools knowledge in launch.json (expansion of variables and commands is not yet supported in the Makefile Tools settings of settings.json):
|
||||
|
||||
- "cwd": "${command:makefile.getLaunchTargetDirectory}",
|
||||
|
||||
- "name": "Launch Program Name",
|
||||
|
||||
- "program": "${command:makefile.getLaunchTargetPath}", <br> or <br>
|
||||
"program": "${command:makefile.getLaunchTargetDirectory}/${command:makefile.getLaunchTargetFileName}",
|
||||
|
||||
- "args": ["${command:makefile.getLaunchTargetArgs}"], <br> or <br>
|
||||
"args": ["${command:makefile.getLaunchTargetArgsConcat}"]
|
||||
|
||||
Build before launch:
|
||||
|
||||
- buildBeforeLaunch setting controls whether a build of the current target should run before debug/run.
|
||||
- When using debug/run via launch.json (and not the makefile commands for debug/run), the correct way to trigger a build is by using the preLaunchTask keyword. This doesn't work now and we plan to implement tasks support very soon: [https://github.com/microsoft/vscode-makefile-tools/issues/101](https://github.com/microsoft/vscode-makefile-tools/issues/101).
|
||||
- Until we implement tasks support, we added 2 commands that are triggering a build:
|
||||
- ${command: makefile.launchTargetPah}, which returns the same path as getLaunchTargetPah
|
||||
- ${command: makefile.launchTargetFileName}, which returns the same file name as getLaunchTargetFileName
|
||||
- Throughout one launch.json configuration, only one of these two commands should be invoked and only once, otherwise the launch will trigger more than one build. The extension can't mitigate this because it doesn't know how many times VSCode will call into it. If commands for launch target path or file name are needed more than once, invoke once without the get prefix and the rest only with the get prefix, so that the project builds only one time.
|
Загрузка…
Ссылка в новой задаче