Skip to content

VSCode WorkDir Workspace, main branch (2025.03.06.)

Since I will need to do some "proper development work" on this repository in the coming weeks, I had another look at whether I could teach VSCode how to build the different projects for me by the click of a button. Just because in such a setup IntelliSense works in a much more robust way than in the way that we have it set up at the moment.

And this is when I learned about "Workspaces". 😉

https://code.visualstudio.com/docs/editor/workspaces/workspaces

That it's possible to set up workspaces with multiple directories, and that Microsoft's CMake plugin has a way of handling such workspaces.

https://devblogs.microsoft.com/cppblog/visual-studio-code-cmake-tools-extension-multi-root-workspaces-and-file-based-api/

With this MR's addition, I can now do the following:

  • Set up the nightly in a terminal window that I want to work on.
[bash][Celeborn]:xaod > setupATLAS
lsetup               lsetup <tool1> [ <tool2> ...] (see lsetup -h):
 lsetup asetup        (or asetup) to setup an Athena release
 lsetup astyle        ATLAS style macros
 lsetup atlantis      Atlantis: event display
 lsetup centralpage   Find samples
 lsetup eiclient      Event Index
 lsetup emi           EMI: grid middleware user interface
 lsetup lcgenv        lcgenv: setup tools from cvmfs SFT repository
 lsetup panda         Panda: Production ANd Distributed Analysis
 lsetup pyami         pyAMI: ATLAS Metadata Interface python client
 lsetup root          ROOT data processing framework
 lsetup rucio         distributed data management system client
 lsetup scikit        python data analysis ecosystem
 lsetup views         Set up a full LCG release
 lsetup xcache        XRootD local proxy cache
 lsetup xrootd        XRootD data access
advancedTools        advanced tools menu
diagnostics          diagnostic tools menu
helpMe               more help
installPip           install relocatable pip modules locally
installRpm           install relocatable rpms locally
printMenu            show this menu
queryC               find / whatis container query
showVersions         show versions of installed software

[bash][Celeborn]:xaod > asetup AnalysisBase,main,latest
Using AnalysisBase/25.2.45 [cmake] with platform x86_64-el9-gcc13-opt
        at /cvmfs/atlas-nightlies.cern.ch/repo/sw/main_AnalysisBase_x86_64-el9-gcc13-opt/2025-03-06T0220
Unchanged: COOL_ORA_ENABLE_ADAPTIVE_OPT=Y
[bash][Celeborn]:xaod >
  • Put a package_filters.txt file beside the athena/ clone in my development directory, like I've always done. (And how I hope most people do this...)
[bash][Celeborn]:xaod > ls -l
total 20
drwxr-xr-x 38 krasznaa krasznaa 4096 Mar  6 13:36 athena
-rw-r--r--  1 krasznaa krasznaa 1051 Mar  6 13:08 package_filters.txt
[bash][Celeborn]:xaod >
  • Open the "workspace" from this terminal, in that environment.
[bash][Celeborn]:xaod > code athena/WorkDir.code-workspace
[bash][Celeborn]:xaod >

This would put me into a setup like:

image

I.e. the main athena/ directory and the Projects/WorkDir directory are opened alongside each other. This is a bit of overkill, since the athena/ directory also has access to the contents of Projects/WorkDir/. But in this setup, as long as one has a file open "from the WorkDir directory", like Projects/WorkDir/CMakeLists.txt as the easiest, one can just click on the "Build" button at the bottom of the window. 🥳

image

🎉 And it actually works! 🎉 It builds the project in a directory called build/ beside the athena/ directory. And makes sure that IntelliSense would work as it should.

image

@fwinkl, @tadej, what do you guys think? Also, since @tadej is one of the power users, could you check that these additions would not interfere with how you use VSCode currently? Since my intention was not to break anybody's current setup. 🤔

Merge request reports

Loading