vscode-cmake-tools: Incorrect run folder
Brief Issue Summary
Running application from CMake: Run without debugging
and CMake: Debug
uses project project workspace folder as run directory instead of the application build directory.
Expected:
- Execute
CMake: Run without debugging
- The executable runs in it’s own directory (for example
${workspaceRoot}/build/gui/app.exe
runned in${workspaceRoot}/build/gui/
)
This how it works in QtCreator.
Apparent Behavior:
It runs in the workspace folder. This is very unconvinient because project may use plugins that need to be taken from executable folder.
Platform and Versions
- Operating System: Arch Linux
- CMake Version: 3.18.1
- VSCode Version: 1.47.3
- CMake Tools Extension Version: 1.4.1
About this issue
- Original URL
- State: closed
- Created 4 years ago
- Reactions: 1
- Comments: 20 (15 by maintainers)
Unfortunately, I’ll need to prepare a patch for that. In the meantime, you could go to the source folder for the extension and delete the
cwd: path.dirname(executable.path)
line.It’s on line 42626 of main.js in the extension’s
dist
folder.Then reload the window and you’re good to go. Do you know where the extension installation directory is?
@Shatur95 @grapland0 it is not that uncommon in the field of research (But I agree that the default should be the build directory).
My project code and the data are versioned with GIT and LFS in one project folder (to keep everything consistent and reproducible), copying all the data to a build directory, especially if you have a distinct build directory for debugging and release to save compilation time, is really time and space consuming (roughly 500k files with a total size of 80GB). Furthermore, changes to the data that are written back by the application, should then be tracked in the VCS again, which is another problem if the data is copied to the build directory.
Another possibility would be to create a config file with CMake, and set there the working directory as a config value and read that when the application is started. But in any IDE I used it was not a problem to set the working directory for Debug and Release builds, so there was never a need for that and as of that the change came quite unexpected.
Using the
launch.json
shown by @Shatur95 with"program": "${command:cmake.launchTargetPath}"
seems to work fine when the menu (or shortcutsf5
andctrl+f5
) are used, but somehow have no effect on the toolbar controls (at the bottom of the window).You should be able to override the working directory with the setting:
@bobbrow How can that behavior be changed again (For both debug and normal run) e.g. in the
launch.json
or workspace setting?That change completely messed up my setup, because I have a huge amount of data located in my working directory that I don’t want to copy to my build directories.
This is available in 1.4.2
Done!
Yes, please test it out and send a PR. We will be happy to review it.