microsoft / vscode-cpptools

Official repository for the Microsoft C/C++ extension for VS Code.
Other
5.5k stars 1.55k forks source link

Headers do not resolve properly for folders opened under a symbolic link #10978

Open hideo67 opened 1 year ago

hideo67 commented 1 year ago

Environment

Bug Summary and Steps to Reproduce

Bug Summary:

For a cmake project which can be successfully built from within vscode, IntelliSense cannot locate header files that are stored in a subdirectory of the project root. Clicking on include directives for system header files succeeds. include directives for project local header files fails. The compiler is intel's icpc.

reproduced using a minimal project as follows: directory structure:

sample/
  CMakeLists.txt
  my_funcs.cpp
  main.cpp
  include/
    my_func.h

my_func.h is included from both source files as #include <my_func.h>

The following error appears in the problems pane:

include errors detected based on information provided by the configurationProvider setting. Squiggles are disabled for this translation unit (/work/group1/user01/sample/main.cpp).

cannot open source file "my_func.h"

Steps to reproduce:

  1. Open project folder via remote ssh
  2. select kit (custom kit specifying intel compiler for c and c++)
  3. click "build"
  4. open editor for source file main.cpp
  5. click on #include

Expected behavior: the header file my_func.h appears in editor space.

Configuration and Logs

c_cpp_properties.json is empty(non existent)

C/C++: Log Diagnostics

-------- Diagnostics - 5/21/2023, 8:54:23 PM
Version: 1.15.4
Current Configuration:
{
    "name": "Linux",
    "includePath": [
        "/work/group1/user01/sample/**"
    ],
    "defines": [],
    "compilerPath": "/usr/bin/gcc",
    "cStandard": "c11",
    "cppStandard": "c++14",
    "intelliSenseMode": "linux-gcc-x64",
    "compilerPathInCppPropertiesJson": "/usr/bin/gcc",
    "intelliSenseModeIsExplicit": false,
    "cStandardIsExplicit": false,
    "cppStandardIsExplicit": false,
    "mergeConfigurations": false,
    "compilerPathIsExplicit": false,
    "configurationProvider": "ms-vscode.cmake-tools",
    "browse": {
        "path": [
            "${workspaceFolder}/**"
        ],
        "limitSymbolsToIncludedHeaders": true
    }
}
Custom browse configuration: 
{
    "browsePath": [
        "/work/group1/user01/sample/include",
        "/work/group1/user01/sample"
    ],
    "compilerPath": "/usr/bin/g++",
    "compilerArgs": [],
    "compilerFragments": [
        "-g"
    ]
}
Translation Unit Mappings:
[ /work/group1/user01/sample/main.cpp ]:
    /work/00/group1/user01/sample/main.cpp
Translation Unit Configurations:
[ /work/00/group1/user01/sample/main.cpp ]:
    Process ID: 84993
    Memory Usage: 305 MB
    Compiler Path: /usr/bin/g++
    Includes:
        /work/opt/local/cores/oneapi/2022.3.1/mpi/2021.7.1/include
        /home/opt/local/cores/oneapi/2022.3.1/vpl/2022.2.5/include
        /home/opt/local/cores/oneapi/2022.3.1/mkl/2022.2.1/include
        /home/opt/local/cores/oneapi/2022.3.1/ippcp/2021.6.2/include
        /home/opt/local/cores/oneapi/2022.3.1/ipp/2021.6.2/include
        /home/opt/local/cores/oneapi/2022.3.1/dpcpp-ct/2022.2.1/include
        /home/opt/local/cores/oneapi/2022.3.1/dev-utilities/2021.7.1/include
        /home/opt/local/cores/oneapi/2022.3.1/dal/2021.7.1/include
        /home/opt/local/cores/oneapi/2022.3.1/dpl/2021.7.2/linux/include
        /home/opt/local/cores/oneapi/2022.3.1/compiler/2022.2.1/linux/include
        /home/opt/local/cores/oneapi/2022.3.1/tbb/2021.7.1/include
        /home/opt/local/cores/oneapi/2022.3.1/ccl/2021.7.1/include/cpu_gpu_dpcpp
        /usr/include/c++/4.8.2
        /usr/include/c++/4.8.2/x86_64-redhat-linux
        /usr/include/c++/4.8.2/backward
        /usr/lib/gcc/x86_64-redhat-linux/4.8.2/include
        /usr/local/include
        /usr/include
    Standard Version: c++14
    IntelliSense Mode: linux-gcc-x64
    Other Flags:
        --g++
        --gnu_version=40805
Total Memory Usage: 306 MB

------- Workspace parsing diagnostics -------
Number of files discovered (not excluded): 23828

Language server logging:
The line saying "File discovery was aborted" concerns me.

--------------
loggingLevel: Debug
Autocomplete is enabled.
Error squiggles are enabled if all header dependencies are resolved.
Hover is enabled.
IntelliSense Engine = default.
File exclude: **/.vs
File exclude: **/.vscode
File exclude: **/Thumbs.db
File exclude: **/.svn
File exclude: **/.git
File exclude: **/.hg
File exclude: **/.DS_Store
File exclude: **/CVS
Search exclude: **/*.code-search
Search exclude: **/node_modules
Search exclude: **/bower_components
Custom configuration provider 'CMake Tools' registered
LSP: cpptools/queryCompilerDefaults (id: 1)
Querying compiler for default C++ language standard using command line: /usr/bin/gcc -x c++ -E -dM /dev/null
Compiler returned default language standard version: gnu++98. Since this version is old, will try to use newer version c++17 as default.
Querying compiler's default target using command line: "/usr/bin/gcc" -dumpmachine
Compiler returned default target value: x86_64-redhat-linux
Compiler query command line: /usr/bin/gcc -std=c17 -m64 -Wp,-v -E -dM -x c /dev/null
Compiler query command line: /usr/bin/gcc -std=c11 -m64 -Wp,-v -E -dM -x c /dev/null
Attempting to get defaults from C compiler in "compilerPath" property: '/usr/bin/gcc'
Compiler query command line: /usr/bin/gcc -std=c++17 -m64 -Wp,-v -E -dM -x c++ /dev/null
Compiler query command line: /usr/bin/gcc -std=c++1z -m64 -Wp,-v -E -dM -x c++ /dev/null
Compiler query command line: /usr/bin/gcc -std=c++14 -m64 -Wp,-v -E -dM -x c++ /dev/null
Compiler query command line: /usr/bin/gcc -std=c++1y -m64 -Wp,-v -E -dM -x c++ /dev/null
Attempting to get defaults from C++ compiler in "compilerPath" property: '/usr/bin/gcc'
LSP: cpptools/didChangeCppProperties (id: 2)
LSP: cpptools/didChangeCppProperties (id: 3)
LSP: cpptools/pauseParsing
LSP: cpptools/clearCustomConfigurations
Code browsing service initialized
Compiler query command line: /usr/bin/gcc -std=c++14 -m64 -Wp,-v -E -dM -x c++ /dev/null
LSP: cpptools/clearCustomConfigurations
Compiler query command line: /usr/bin/gcc -std=c++1y -m64 -Wp,-v -E -dM -x c++ /dev/null
LSP: cpptools/fileCreated: file:///work/group1/user01/sample/build/.cmake/api/v1/reply/index-2023-05-21T11-20-22-0324.json
LSP: cpptools/fileCreated: file:///work/group1/user01/sample/build/CMakeFiles/Makefile.cmake
LSP: cpptools/fileCreated: file:///work/group1/user01/sample/build/CMakeFiles/Makefile2
LSP: cpptools/fileCreated: file:///work/group1/user01/sample/build/CMakeFiles/TargetDirectories.txt
LSP: cpptools/fileCreated: file:///work/group1/user01/sample/build/CMakeFiles/progress.marks
LSP: cpptools/fileCreated: file:///work/group1/user01/sample/build/CMakeFiles/sample.dir/compiler_depend.make
LSP: cpptools/fileCreated: file:///work/group1/user01/sample/build/CMakeFiles/sample.dir/depend.make
LSP: cpptools/fileCreated: file:///work/group1/user01/sample/build/CMakeFiles/sample.dir/progress.make
LSP: cpptools/fileCreated: file:///work/group1/user01/sample/build/Makefile
LSP: cpptools/fileCreated: file:///work/group1/user01/sample/build/compile_commands.json
LSP: cpptools/fileDeleted: file:///work/group1/user01/sample/build/.cmake/api/v1/reply/index-2023-05-21T11-11-36-0495.json
Attempting to get defaults from C++ compiler in "compilerPath" property: '/usr/bin/gcc'
Compiler query command line: /usr/bin/gcc -std=c11 -m64 -Wp,-v -E -dM -x c /dev/null
Attempting to get defaults from C compiler in "compilerPath" property: '/usr/bin/gcc'
  Folder: /home/opt/local/cores/oneapi/2022.3.1/ccl/2021.7.1/include/cpu_gpu_dpcpp/ will be indexed
  Folder: /home/opt/local/cores/oneapi/2022.3.1/compiler/2022.2.1/linux/include/ will be indexed
  Folder: /home/opt/local/cores/oneapi/2022.3.1/dal/2021.7.1/include/ will be indexed
  Folder: /home/opt/local/cores/oneapi/2022.3.1/dev-utilities/2021.7.1/include/ will be indexed
  Folder: /home/opt/local/cores/oneapi/2022.3.1/dpcpp-ct/2022.2.1/include/ will be indexed
  Folder: /home/opt/local/cores/oneapi/2022.3.1/dpl/2021.7.2/linux/include/ will be indexed
  Folder: /home/opt/local/cores/oneapi/2022.3.1/ipp/2021.6.2/include/ will be indexed
  Folder: /home/opt/local/cores/oneapi/2022.3.1/ippcp/2021.6.2/include/ will be indexed
  Folder: /home/opt/local/cores/oneapi/2022.3.1/mkl/2022.2.1/include/ will be indexed
  Folder: /home/opt/local/cores/oneapi/2022.3.1/tbb/2021.7.1/include/ will be indexed
  Folder: /home/opt/local/cores/oneapi/2022.3.1/vpl/2022.2.5/include/ will be indexed
  Folder: /usr/include/ will be indexed
  Folder: /usr/lib/gcc/x86_64-redhat-linux/4.8.2/include/ will be indexed
  Folder: /usr/local/include/ will be indexed
  Folder: /work/opt/local/cores/oneapi/2022.3.1/mpi/2021.7.1/include/ will be indexed
  Folder: /work/00/group1/user01/sample/ will be indexed
Custom browse configuration received: {
  "browsePath": [
    "/work/group1/user01/sample/include",
    "/work/group1/user01/sample"
  ],
  "compilerPath": "/usr/bin/g++",
  "compilerArgs": [],
  "compilerFragments": [
    "-g"
  ]
}
Custom browse configuration received: {
  "browsePath": [
    "/work/group1/user01/sample/include",
    "/work/group1/user01/sample"
  ],
  "compilerPath": "/usr/bin/g++",
  "compilerArgs": [],
  "compilerFragments": [
    "-g"
  ]
}
Discovering files...
LSP: cpptools/didChangeCustomBrowseConfiguration
LSP: cpptools/clearCustomConfigurations
LSP: cpptools/didChangeCustomBrowseConfiguration
LSP: cpptools/resumeParsing
Custom browse configuration received: {
  "browsePath": [
    "/work/group1/user01/sample/include",
    "/work/group1/user01/sample"
  ],
  "compilerPath": "/usr/bin/g++",
  "compilerArgs": [],
  "compilerFragments": [
    "-g"
  ]
}
Querying compiler for default C++ language standard using command line: /usr/bin/g++ -x c++ -E -dM /dev/null
  Processing folder (recursive): /home/opt/local/cores/oneapi/2022.3.1/ccl/2021.7.1/include/cpu_gpu_dpcpp/
LSP: cpptools/clearCustomConfigurations
LSP: cpptools/didChangeCustomBrowseConfiguration
LSP: cpptools/resumeParsing
Compiler returned default language standard version: gnu++98. Since this version is old, will try to use newer version c++17 as default.
Querying compiler's default target using command line: "/usr/bin/g++" -dumpmachine
Compiler returned default target value: x86_64-redhat-linux
Compiler query command line: /usr/bin/g++ -g -std=c++17 -m64 -Wp,-v -E -dM -x c++ /dev/null
Compiler query command line: /usr/bin/g++ -g -std=c++1z -m64 -Wp,-v -E -dM -x c++ /dev/null
Compiler query command line: /usr/bin/g++ -g -std=c++14 -m64 -Wp,-v -E -dM -x c++ /dev/null
  Processing folder (recursive): /home/opt/local/cores/oneapi/2022.3.1/compiler/2022.2.1/linux/include/
Compiler query command line: /usr/bin/g++ -g -std=c++1y -m64 -Wp,-v -E -dM -x c++ /dev/null
Attempting to get defaults from C++ compiler in "compilerPath" property: '/usr/bin/g++'
  Folder: /work/opt/local/cores/oneapi/2022.3.1/mpi/2021.7.1/include/ will be indexed
  Folder: /home/opt/local/cores/oneapi/2022.3.1/vpl/2022.2.5/include/ will be indexed
  Folder: /home/opt/local/cores/oneapi/2022.3.1/mkl/2022.2.1/include/ will be indexed
  Folder: /home/opt/local/cores/oneapi/2022.3.1/ippcp/2021.6.2/include/ will be indexed
  Folder: /home/opt/local/cores/oneapi/2022.3.1/ipp/2021.6.2/include/ will be indexed
  Folder: /home/opt/local/cores/oneapi/2022.3.1/dpcpp-ct/2022.2.1/include/ will be indexed
  Folder: /home/opt/local/cores/oneapi/2022.3.1/dev-utilities/2021.7.1/include/ will be indexed
  Folder: /home/opt/local/cores/oneapi/2022.3.1/dal/2021.7.1/include/ will be indexed
  Folder: /home/opt/local/cores/oneapi/2022.3.1/dpl/2021.7.2/linux/include/ will be indexed
  Folder: /home/opt/local/cores/oneapi/2022.3.1/compiler/2022.2.1/linux/include/ will be indexed
  Folder: /home/opt/local/cores/oneapi/2022.3.1/tbb/2021.7.1/include/ will be indexed
  Folder: /home/opt/local/cores/oneapi/2022.3.1/ccl/2021.7.1/include/cpu_gpu_dpcpp/ will be indexed
  Folder: /usr/lib/gcc/x86_64-redhat-linux/4.8.2/include/ will be indexed
  Folder: /usr/local/include/ will be indexed
  Folder: /usr/include/ will be indexed
  Folder: /work/00/group1/user01/sample/ will be indexed
File discovery was aborted
  Discovering files: 72 file(s) processed
Done discovering files.
Discovering files...
  Processing folder (recursive): /work/opt/local/cores/oneapi/2022.3.1/mpi/2021.7.1/include/
  Processing folder (recursive): /home/opt/local/cores/oneapi/2022.3.1/vpl/2022.2.5/include/
  Processing folder (recursive): /home/opt/local/cores/oneapi/2022.3.1/mkl/2022.2.1/include/
  Processing folder (recursive): /home/opt/local/cores/oneapi/2022.3.1/ippcp/2021.6.2/include/
  Processing folder (recursive): /home/opt/local/cores/oneapi/2022.3.1/ipp/2021.6.2/include/
  Processing folder (recursive): /home/opt/local/cores/oneapi/2022.3.1/dpcpp-ct/2022.2.1/include/
  Processing folder (recursive): /home/opt/local/cores/oneapi/2022.3.1/dev-utilities/2021.7.1/include/
  Processing folder (recursive): /home/opt/local/cores/oneapi/2022.3.1/dal/2021.7.1/include/
  Processing folder (recursive): /home/opt/local/cores/oneapi/2022.3.1/dpl/2021.7.2/linux/include/
  Processing folder (recursive): /home/opt/local/cores/oneapi/2022.3.1/compiler/2022.2.1/linux/include/
  Processing folder (recursive): /home/opt/local/cores/oneapi/2022.3.1/tbb/2021.7.1/include/
  Processing folder (recursive): /home/opt/local/cores/oneapi/2022.3.1/ccl/2021.7.1/include/cpu_gpu_dpcpp/
  Processing folder (recursive): /usr/lib/gcc/x86_64-redhat-linux/4.8.2/include/
  Processing folder (recursive): /usr/local/include/
  Processing folder (recursive): /usr/include/
  Processing folder (recursive): /work/00/group1/user01/sample/
  Discovering files: 23828 file(s) processed
  1 file(s) removed from database
Done discovering files.
Populating include completion cache.
Parsing remaining files...
  Parsing: 0 files(s) processed
Done parsing remaining files.
LSP: cpptools/queryTranslationUnitSource: file:///work/group1/user01/sample/main.cpp (id: 4)
LSP: cpptools/getCodeActions: file:///work/group1/user01/sample/main.cpp (id: 5)
LSP: cpptools/textEditorSelectionChange
LSP: cpptools/textEditorSelectionChange
LSP: textDocument/didOpen: file:///work/group1/user01/sample/main.cpp
LSP: cpptools/activeDocumentChange: file:///work/group1/user01/sample/main.cpp
LSP: cpptools/getDocumentSymbols: file:///work/group1/user01/sample/main.cpp (id: 6)
LSP: cpptools/getSemanticTokens: file:///work/group1/user01/sample/main.cpp (id: 7)
LSP: cpptools/getInlayHints: file:///work/group1/user01/sample/main.cpp (id: 8)
sending compilation args for /work/00/group1/user01/sample/main.cpp
  include: /work/opt/local/cores/oneapi/2022.3.1/mpi/2021.7.1/include
  include: /home/opt/local/cores/oneapi/2022.3.1/vpl/2022.2.5/include
  include: /home/opt/local/cores/oneapi/2022.3.1/mkl/2022.2.1/include
  include: /home/opt/local/cores/oneapi/2022.3.1/ippcp/2021.6.2/include
  include: /home/opt/local/cores/oneapi/2022.3.1/ipp/2021.6.2/include
  include: /home/opt/local/cores/oneapi/2022.3.1/dpcpp-ct/2022.2.1/include
  include: /home/opt/local/cores/oneapi/2022.3.1/dev-utilities/2021.7.1/include
  include: /home/opt/local/cores/oneapi/2022.3.1/dal/2021.7.1/include
  include: /home/opt/local/cores/oneapi/2022.3.1/dpl/2021.7.2/linux/include
  include: /home/opt/local/cores/oneapi/2022.3.1/compiler/2022.2.1/linux/include
  include: /home/opt/local/cores/oneapi/2022.3.1/tbb/2021.7.1/include
  include: /home/opt/local/cores/oneapi/2022.3.1/ccl/2021.7.1/include/cpu_gpu_dpcpp
  include: /usr/include/c++/4.8.2
  include: /usr/include/c++/4.8.2/x86_64-redhat-linux
  include: /usr/include/c++/4.8.2/backward
  include: /usr/lib/gcc/x86_64-redhat-linux/4.8.2/include
  include: /usr/local/include
  include: /usr/include
  define: __DBL_MIN_EXP__=(-1021)
  define: __UINT_LEAST16_MAX__=65535
  define: __ATOMIC_ACQUIRE=2
  define: __FLT_MIN__=1.17549435082228750797e-38F
  define: __UINT_LEAST8_TYPE__=unsigned char
  define: __INTMAX_C(c)=c ## L
  define: __CHAR_BIT__=8
  define: __UINT8_MAX__=255
  define: __WINT_MAX__=4294967295U
  define: __ORDER_LITTLE_ENDIAN__=1234
  define: __SIZE_MAX__=18446744073709551615UL
  define: __WCHAR_MAX__=2147483647
  define: __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1=1
  define: __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2=1
  define: __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4=1
  define: __DBL_DENORM_MIN__=double(4.94065645841246544177e-324L)
  define: __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8=1
  define: __GCC_ATOMIC_CHAR_LOCK_FREE=2
  define: __FLT_EVAL_METHOD__=0
  define: __unix__=1
  define: __GCC_ATOMIC_CHAR32_T_LOCK_FREE=2
  define: __x86_64=1
  define: __UINT_FAST64_MAX__=18446744073709551615UL
  define: __SIG_ATOMIC_TYPE__=int
  define: __DBL_MIN_10_EXP__=(-307)
  define: __FINITE_MATH_ONLY__=0
  define: __GNUC_PATCHLEVEL__=5
  define: __UINT_FAST8_MAX__=255
  define: __DEC64_MAX_EXP__=385
  define: __INT8_C(c)=c
  define: __UINT_LEAST64_MAX__=18446744073709551615UL
  define: __SHRT_MAX__=32767
  define: __LDBL_MAX__=1.18973149535723176502e+4932L
  define: __UINT_LEAST8_MAX__=255
  define: __GCC_ATOMIC_BOOL_LOCK_FREE=2
  define: __UINTMAX_TYPE__=long unsigned int
  define: __linux=1
  define: __DEC32_EPSILON__=1E-6DF
  define: __unix=1
  define: __UINT32_MAX__=4294967295U
  define: __GXX_EXPERIMENTAL_CXX0X__=1
  define: __LDBL_MAX_EXP__=16384
  define: __WINT_MIN__=0U
  define: __linux__=1
  define: __SCHAR_MAX__=127
  define: __WCHAR_MIN__=(-__WCHAR_MAX__ - 1)
  define: __INT64_C(c)=c ## L
  define: __DBL_DIG__=15
  define: __GCC_ATOMIC_POINTER_LOCK_FREE=2
  define: __SIZEOF_INT__=4
  define: __SIZEOF_POINTER__=8
  define: __GCC_ATOMIC_CHAR16_T_LOCK_FREE=2
  define: __USER_LABEL_PREFIX__=
  define: __STDC_HOSTED__=1
  define: __LDBL_HAS_INFINITY__=1
  define: __FLT_EPSILON__=1.19209289550781250000e-7F
  define: __GXX_WEAK__=1
  define: __LDBL_MIN__=3.36210314311209350626e-4932L
  define: __DEC32_MAX__=9.999999E96DF
  define: __INT32_MAX__=2147483647
  define: __SIZEOF_LONG__=8
  define: __STDC_IEC_559__=1
  define: __STDC_ISO_10646__=201103L
  define: __UINT16_C(c)=c
  define: __DECIMAL_DIG__=21
  define: __gnu_linux__=1
  define: __LDBL_HAS_QUIET_NAN__=1
  define: __GNUC__=4
  define: __GXX_RTTI=1
  define: __MMX__=1
  define: __FLT_HAS_DENORM__=1
  define: __SIZEOF_LONG_DOUBLE__=16
  define: __BIGGEST_ALIGNMENT__=16
  define: __DBL_MAX__=double(1.79769313486231570815e+308L)
  define: __INT_FAST32_MAX__=9223372036854775807L
  define: __DBL_HAS_INFINITY__=1
  define: __INT64_MAX__=9223372036854775807L
  define: __DEC32_MIN_EXP__=(-94)
  define: __INT_FAST16_TYPE__=long int
  define: __STRICT_ANSI__=1
  define: __LDBL_HAS_DENORM__=1
  define: __cplusplus=201103L
  define: __DEC128_MAX__=9.999999999999999999999999999999999E6144DL
  define: __INT_LEAST32_MAX__=2147483647
  define: __DEC32_MIN__=1E-95DF
  define: __DEPRECATED=1
  define: __DBL_MAX_EXP__=1024
  define: __DEC128_EPSILON__=1E-33DL
  define: __SSE2_MATH__=1
  define: __ATOMIC_HLE_RELEASE=131072
  define: __PTRDIFF_MAX__=9223372036854775807L
  define: __amd64=1
  define: __STDC_NO_THREADS__=1
  define: __ATOMIC_HLE_ACQUIRE=65536
  define: __GNUG__=4
  define: __LONG_LONG_MAX__=9223372036854775807LL
  define: __SIZEOF_SIZE_T__=8
  define: __SIZEOF_WINT_T__=4
  define: __GCC_HAVE_DWARF2_CFI_ASM=1
  define: __GXX_ABI_VERSION=1002
  define: __FLT_MIN_EXP__=(-125)
  define: __INT_FAST64_TYPE__=long int
  define: __DBL_MIN__=double(2.22507385850720138309e-308L)
  define: __LP64__=1
  define: __DECIMAL_BID_FORMAT__=1
  define: __DEC128_MIN__=1E-6143DL
  define: __REGISTER_PREFIX__=
  define: __UINT16_MAX__=65535
  define: __DBL_HAS_DENORM__=1
  define: __UINT8_TYPE__=unsigned char
  define: __NO_INLINE__=1
  define: __FLT_MANT_DIG__=24
  define: __VERSION__="4.8.5 20150623 (Red Hat 4.8.5-36)"
  define: __UINT64_C(c)=c ## UL
  define: _STDC_PREDEF_H=1
  define: __GCC_ATOMIC_INT_LOCK_FREE=2
  define: __FLOAT_WORD_ORDER__=__ORDER_LITTLE_ENDIAN__
  define: __STDC_IEC_559_COMPLEX__=1
  define: __INT32_C(c)=c
  define: __DEC64_EPSILON__=1E-15DD
  define: __ORDER_PDP_ENDIAN__=3412
  define: __DEC128_MIN_EXP__=(-6142)
  define: __INT_FAST32_TYPE__=long int
  define: __UINT_LEAST16_TYPE__=short unsigned int
  define: __INT16_MAX__=32767
  define: __SIZE_TYPE__=long unsigned int
  define: __UINT64_MAX__=18446744073709551615UL
  define: __INT8_TYPE__=signed char
  define: __ELF__=1
  define: __FLT_RADIX__=2
  define: __INT_LEAST16_TYPE__=short int
  define: __LDBL_EPSILON__=1.08420217248550443401e-19L
  define: __UINTMAX_C(c)=c ## UL
  define: __GNUC_RH_RELEASE__=36
  define: __k8=1
  define: __SIG_ATOMIC_MAX__=2147483647
  define: __GCC_ATOMIC_WCHAR_T_LOCK_FREE=2
  define: __SIZEOF_PTRDIFF_T__=8
  define: __x86_64__=1
  define: __DEC32_SUBNORMAL_MIN__=0.000001E-95DF
  define: __INT_FAST16_MAX__=9223372036854775807L
  define: __UINT_FAST32_MAX__=18446744073709551615UL
  define: __UINT_LEAST64_TYPE__=long unsigned int
  define: __FLT_HAS_QUIET_NAN__=1
  define: __FLT_MAX_10_EXP__=38
  define: __LONG_MAX__=9223372036854775807L
  define: __DEC128_SUBNORMAL_MIN__=0.000000000000000000000000000000001E-6143DL
  define: __FLT_HAS_INFINITY__=1
  define: __UINT_FAST16_TYPE__=long unsigned int
  define: __DEC64_MAX__=9.999999999999999E384DD
  define: __CHAR16_TYPE__=short unsigned int
  define: __PRAGMA_REDEFINE_EXTNAME=1
  define: __INT_LEAST16_MAX__=32767
  define: __DEC64_MANT_DIG__=16
  define: __UINT_LEAST32_MAX__=4294967295U
  define: __GCC_ATOMIC_LONG_LOCK_FREE=2
  define: __INT_LEAST64_TYPE__=long int
  define: __INT16_TYPE__=short int
  define: __INT_LEAST8_TYPE__=signed char
  define: __DEC32_MAX_EXP__=97
  define: __INT_FAST8_MAX__=127
  define: __INTPTR_MAX__=9223372036854775807L
  define: __SSE2__=1
  define: __EXCEPTIONS=1
  define: __LDBL_MANT_DIG__=64
  define: __DBL_HAS_QUIET_NAN__=1
  define: __SIG_ATOMIC_MIN__=(-__SIG_ATOMIC_MAX__ - 1)
  define: __code_model_small__=1
  define: __k8__=1
  define: __INTPTR_TYPE__=long int
  define: __UINT16_TYPE__=short unsigned int
  define: __WCHAR_TYPE__=int
  define: __SIZEOF_FLOAT__=4
  define: __UINTPTR_MAX__=18446744073709551615UL
  define: __DEC64_MIN_EXP__=(-382)
  define: __INT_FAST64_MAX__=9223372036854775807L
  define: __GCC_ATOMIC_TEST_AND_SET_TRUEVAL=1
  define: __FLT_DIG__=6
  define: __UINT_FAST64_TYPE__=long unsigned int
  define: __INT_MAX__=2147483647
  define: __amd64__=1
  define: __INT64_TYPE__=long int
  define: __FLT_MAX_EXP__=128
  define: __ORDER_BIG_ENDIAN__=4321
  define: __DBL_MANT_DIG__=53
  define: __INT_LEAST64_MAX__=9223372036854775807L
  define: __DEC64_MIN__=1E-383DD
  define: __WINT_TYPE__=unsigned int
  define: __UINT_LEAST32_TYPE__=unsigned int
  define: __SIZEOF_SHORT__=2
  define: __SSE__=1
  define: __LDBL_MIN_EXP__=(-16381)
  define: __INT_LEAST8_MAX__=127
  define: __SIZEOF_INT128__=16
  define: __LDBL_MAX_10_EXP__=4932
  define: __ATOMIC_RELAXED=0
  define: __DBL_EPSILON__=double(2.22044604925031308085e-16L)
  define: _LP64=1
  define: __UINT8_C(c)=c
  define: __INT_LEAST32_TYPE__=int
  define: __SIZEOF_WCHAR_T__=4
  define: __UINT64_TYPE__=long unsigned int
  define: __INT_FAST8_TYPE__=signed char
  define: __GNUC_STDC_INLINE__=1
  define: __DBL_DECIMAL_DIG__=17
  define: __FXSR__=1
  define: __DEC_EVAL_METHOD__=2
  define: __UINT32_C(c)=c ## U
  define: __INTMAX_MAX__=9223372036854775807L
  define: __BYTE_ORDER__=__ORDER_LITTLE_ENDIAN__
  define: __FLT_DENORM_MIN__=1.40129846432481707092e-45F
  define: __INT8_MAX__=127
  define: __UINT_FAST32_TYPE__=long unsigned int
  define: __CHAR32_TYPE__=unsigned int
  define: __FLT_MAX__=3.40282346638528859812e+38F
  define: __INT32_TYPE__=int
  define: __SIZEOF_DOUBLE__=8
  define: __INTMAX_TYPE__=long int
  define: __DEC128_MAX_EXP__=6145
  define: __ATOMIC_CONSUME=1
  define: __GNUC_MINOR__=8
  define: __UINTMAX_MAX__=18446744073709551615UL
  define: __DEC32_MANT_DIG__=7
  define: __DBL_MAX_10_EXP__=308
  define: __LDBL_DENORM_MIN__=3.64519953188247460253e-4951L
  define: __INT16_C(c)=c
  define: __STDC__=1
  define: __PTRDIFF_TYPE__=long int
  define: __ATOMIC_SEQ_CST=5
  define: __UINT32_TYPE__=unsigned int
  define: __UINTPTR_TYPE__=long unsigned int
  define: __DEC64_SUBNORMAL_MIN__=0.000000000000001E-383DD
  define: __DEC128_MANT_DIG__=34
  define: __LDBL_MIN_10_EXP__=(-4931)
  define: __SSE_MATH__=1
  define: __SIZEOF_LONG_LONG__=8
  define: __GCC_ATOMIC_LLONG_LOCK_FREE=2
  define: __LDBL_DIG__=18
  define: __FLT_DECIMAL_DIG__=9
  define: __UINT_FAST16_MAX__=18446744073709551615UL
  define: __FLT_MIN_10_EXP__=(-37)
  define: __GCC_ATOMIC_SHORT_LOCK_FREE=2
  define: __UINT_FAST8_TYPE__=unsigned char
  define: _GNU_SOURCE=1
  define: __ATOMIC_ACQ_REL=4
  define: __ATOMIC_RELEASE=3
  other: --g++
  other: --gnu_version=40805
  stdver: c++14
  intelliSenseMode: linux-gcc-x64
Checking for syntax errors: /work/group1/user01/sample/main.cpp
Queueing IntelliSense update for files in translation unit of: /work/00/group1/user01/sample/main.cpp
LSP: cpptools/getCodeActions: file:///work/group1/user01/sample/main.cpp (id: 9)
LSP: cpptools/getFoldingRanges: file:///work/group1/user01/sample/main.cpp (id: 10)
Error squiggle count: 4
Error squiggles will be disabled in: file:///work/00/group1/user01/sample/main.cpp
Update IntelliSense time (sec): 0.518
Database safe to open
--------------

Other Extensions

cmake

Additional context

CMakeLists.txt:

cmake_minimum_required(VERSION 3.0)
project(sample)

include_directories(include)

add_executable(sample main.cpp my_func.cpp)

main.cpp

#include <my_func.h>
#include <iostream>

int main(int argc, char *argv[])
{
    int x = 3;
    int y = 4;
    int z = my_add(x,y);
    std::cout << "z = " << z << std::endl;
    return 0;
}

include/my_func.h

#ifndef _MY_FUNC_H
#define _MY_FUNC_H

int my_add(int x, int y);

#endif
Colengms commented 1 year ago

Hi @hideo67 . You're using a configurationProvider, but there does not appear to have been a custom configuration received for main.cpp. If your CMakeLists.txt is composed correctly, there would seem to be an issue with CMake Tools not providing a configuration for that file as expected.

Currently, if a custom configuration is not received, the C/C++ Extension will try to use the 'browse configuration' to compose a configuration for the file.

Looking at the browse configuration returned by CMake Tools, I see the following include paths:

/work/group1/user01/sample/include
/work/group1/user01/sample

However, the path to your source file appears to be: /work/00/group1/user01/sample/main.cpp, which appears to be under a different parent path than what the browse configuration was provided for.

Perhaps you modified the paths in the logs you provided, to scrub it for personal information, and updated some paths incorrectly?

hideo67 commented 1 year ago

Hi Colen. Thanks for looking through the logs. Yes I modified the path names in the logs. However the path structure is kept the same. /work/group1 is a symbolic link to /work/00/group1.

Should I post this to the cmake-tools project?

Colengms commented 1 year ago

Hi @hideo67 . I suspect the issue is related to the symbolic link, and a comparison or lookup failing with a path either with or without the symbolic link resolved.

I think there are two issues here. One issue would seem to be with CMake Tools, as it should be successfully providing a custom configuration for the source file regardless of whether we're requesting it using a path that has the symbol link resolved or not resolved. It's likely not resolving symbolic links in the path it receives in that request, or the paths it compares that to.

However, even without a custom configuration, the header should be resolved properly, as both the custom browse configuration and the base configuration also refer into the necessary include path. That would seem to be a problem with symbolic links not being resolved under some other code path in the C/C++ extension.

If you disable the custom configuration provider (by temporarily removing configurationProvider from your base configuration), does that avoid the issue?

We can use this issue to track problems with the general scenario in which a folder is opened under a symbolic link.

hideo67 commented 1 year ago

Hi @Colengms. I removed configurationProvider from my base configuration through Ctrl-, (I'm not quite sure if I ever set this before) and it worked!

Is there anything else I should try or provide information?

Colengms commented 1 year ago

Hi @hideo67 . I think we have enough information from your logs to investigate further. We have multiple issues with symlinks, and will likely investigate and address them all together.

Another potential work-around would be to open the workspace from the resolve path instead of the path containing the symlink, and using fully resolved paths where necessary to use full paths.