Andersbakken / rtags

A client/server indexer for c/c++/objc[++] with integration for Emacs based on clang.
http://www.rtags.net
GNU General Public License v3.0
1.83k stars 252 forks source link

Determining compilation environment or command for files processed by rdm #532

Open sbroberg opened 8 years ago

sbroberg commented 8 years ago

I'm currently able to use rtags to process a simple test project, but when I point it at our real project (with many cmake submodules, command line compilation options, etc.), it is repeated failing when trying to compile the files. The error messages would indicate that it is not seeing headers, wrong include paths, etc.

How can I see what compile command rdm is executing such that it is producing so many errors? The compile command, when run using the string from the compile_commands.json file, runs fine, even from a shell with no special environment variable set, other than the defaults you get as an OSX user.

Here's a boiled-down version of the compile_commands.json, with just one file that builds fine from the shell, but generates the following errors in the rdm output:

[
{
  "directory": "/Users/stebro/test/daemon_cmake_db/daemon/src",
  "command": "/usr/bin/clang++   -DASSERT_ON  -DQT_CORE_LIB -DQT_NETWORK_LIB -DQT_NO_DEBUG -arch i386 -I/Users/stebro/test/daemon_cmake_db/daemon/src -I/Users/stebro/product/daemon/src -isystem /Volumes/ProductToolChain/include -isystem /Volumes/ProductToolChain/include/log4qt -isystem /Volumes/ProductToolChain/include/log4qt/varia -I/Users/stebro/product/daemon/src/../include -I/Users/stebro/product/daemon/dbcommon/include -F/Volumes/ProductToolChain/qt-5.5/lib -I/Volumes/ProductToolChain/qt-5.5/lib/QtCore.framework/Headers -I/Volumes/ProductToolChain/qt-5.5/mkspecs/macx-clang-32 -I/Users/stebro/product/daemon/dbcommon/ClientShared/include -I/Users/stebro/test/daemon_cmake_db/daemon/dbcommon/ClientShared/include -I/Volumes/ProductToolChain/qt-5.5/lib/QtNetwork.framework/Headers -I/Users/stebro/product/daemon/legacy/Client/Mac/MSDEV -I/Users/stebro/product/daemon/legacy/Client/Mac/MSDEV/mac/include -I/Users/stebro/product/daemon/legacy/Client/Mac/MSDEV/INCLUDE -I/Users/stebro/product/daemon/legacy/Shared/Common/../include -I/Users/stebro/product/daemon/legacy/Shared/Common -I/Users/stebro/product/daemon/legacy/Client/Library/LibBackupEngine/../../include -I/Users/stebro/product/daemon/legacy/Client/Mac/Common    -stdlib=libstdc++ -Werror -Wno-c99-extensions -Wno-c++98-compat -Wreorder -Wunused-variable -Woverloaded-virtual -Wno-unused-local-typedef -Wno-inconsistent-missing-override -Wunused-function -Wno-unknown-warning-option -Wno-unused-const-variable -Wno-redeclared-class-member -Wno-header-guard -Wno-logical-not-parentheses -Wno-\\#warnings -Wno-c++11-extensions -Wshorten-64-to-32  -include /Users/stebro/product/daemon/src/../include/nextgen_pch.h -Winvalid-pch -fPIC -o CMakeFiles/ClientNextGen.dir/services/WorkItemBlockingThread.cpp.o -c /Users/stebro/product/daemon/src/services/WorkItemBlockingThread.cpp",
  "file": "/Users/stebro/product/daemon/src/services/WorkItemBlockingThread.cpp"
}
]

rdm output:

mbp15-04539:rtags stebro$ bin/rdm 
Running with 8 jobs, using args: -ferror-limit=0 -Wall -fspell-checking -Wno-unknown-warning-option
Includepaths: -isystem /usr/local/Cellar/llvm36/3.6.2/lib/llvm-3.6/lib/clang/3.6.2/include/
Restoring /Users/stebro/test/sqlite/ ..
[100%] 1/1 16:06:44 ~/product/daemon/src/services/WorkItemBlockingThread.cpp in 12972ms. (102937 syms, 157328 symNames, 1038 includes, 399 of 399 files, symbols: 135648 of 135648, 398 queried) (1619/4286/7049ms). (priority 0)
Jobs took 16.92s. We're using 226mb of memory. 
Output from /Users/stebro/product/daemon/src/services/WorkItemBlockingThread.cpp:
/Users/stebro/product/daemon/src/../include/services/Fwd.h:39:9: error: unknown type name 'QSharedPointer'
/Users/stebro/product/daemon/src/../include/services/Fwd.h:39:23: error: expected unqualified-id
/Users/stebro/product/daemon/src/../include/services/Fwd.h:40:9: error: unknown type name 'QSharedPointer'
/Users/stebro/product/daemon/src/../include/services/Fwd.h:40:23: error: expected unqualified-id
/Users/stebro/product/daemon/src/../include/services/Fwd.h:41:9: error: unknown type name 'QSharedPointer'
/Users/stebro/product/daemon/src/../include/services/Fwd.h:41:23: error: expected unqualified-id
/Users/stebro/product/daemon/src/../include/services/Fwd.h:42:9: error: unknown type name 'QSharedPointer'
/Users/stebro/product/daemon/src/../include/services/Fwd.h:42:23: error: expected unqualified-id
/Users/stebro/product/daemon/src/../include/services/Fwd.h:43:9: error: unknown type name 'QSharedPointer'
/Users/stebro/product/daemon/src/../include/services/Fwd.h:43:23: error: expected unqualified-id
/Users/stebro/product/daemon/src/../include/services/Fwd.h:44:9: error: unknown type name 'QSharedPointer'
/Users/stebro/product/daemon/src/../include/services/Fwd.h:44:23: error: expected unqualified-id
/Users/stebro/product/daemon/src/../include/services/Fwd.h:45:9: error: unknown type name 'QSharedPointer'
/Users/stebro/product/daemon/src/../include/services/Fwd.h:45:23: error: expected unqualified-id
/Users/stebro/product/daemon/src/../include/services/Fwd.h:46:9: error: unknown type name 'QSharedPointer'
/Users/stebro/product/daemon/src/../include/services/Fwd.h:46:23: error: expected unqualified-id
/Users/stebro/product/daemon/src/../include/services/Fwd.h:47:9: error: unknown type name 'QSharedPointer'
/Users/stebro/product/daemon/src/../include/services/Fwd.h:47:23: error: expected unqualified-id
/Users/stebro/product/daemon/src/../include/services/Fwd.h:48:9: error: unknown type name 'QSharedPointer'
/Users/stebro/product/daemon/src/../include/services/Fwd.h:48:23: error: expected unqualified-id
/Users/stebro/product/daemon/src/../include/services/Fwd.h:49:9: error: unknown type name 'QSharedPointer'
/Users/stebro/product/daemon/src/../include/services/Fwd.h:49:23: error: expected unqualified-id
/Users/stebro/product/daemon/src/../include/services/Fwd.h:50:9: error: unknown type name 'QSharedPointer'
/Users/stebro/product/daemon/src/../include/services/Fwd.h:50:23: error: expected unqualified-id
/Users/stebro/product/daemon/src/../include/services/Fwd.h:51:9: error: unknown type name 'QSharedPointer'
/Users/stebro/product/daemon/src/../include/services/Fwd.h:51:23: error: expected unqualified-id
/Users/stebro/product/daemon/src/../include/services/Fwd.h:52:9: error: unknown type name 'QSharedPointer'
/Users/stebro/product/daemon/src/../include/services/Fwd.h:52:23: error: expected unqualified-id
/Users/stebro/product/daemon/src/../include/services/Fwd.h:53:9: error: unknown type name 'QSharedPointer'
/Users/stebro/product/daemon/src/../include/services/Fwd.h:53:23: error: expected unqualified-id
/Users/stebro/product/daemon/src/../include/services/Fwd.h:54:9: error: unknown type name 'QSharedPointer'
/Users/stebro/product/daemon/src/../include/services/Fwd.h:54:23: error: expected unqualified-id
/Users/stebro/product/daemon/src/../include/services/Fwd.h:55:9: error: unknown type name 'QSharedPointer'
/Users/stebro/product/daemon/src/../include/services/Fwd.h:55:23: error: expected unqualified-id
/Users/stebro/product/daemon/src/../include/utils/BlockingThread.h:130:10: error: no type named 'concurrent_bounded_queue' in namespace 'tbb'
/Users/stebro/product/daemon/src/../include/utils/BlockingThread.h:130:34: error: expected member name or ';' after declaration specifiers
/Users/stebro/product/daemon/src/../include/utils/BlockingThread.h:99:13: error: member initializer 'queue_' does not name a non-static data member or base class
/Users/stebro/product/daemon/src/../include/utils/BlockingThread.h:111:9: error: use of undeclared identifier 'queue_'; did you mean 'kqueue'?
/usr/include/sys/event.h:323:9: note: 'kqueue' declared here
/Users/stebro/product/daemon/src/../include/utils/BlockingThread.h:111:15: error: member reference base type 'int ()' is not a structure or union
/Users/stebro/product/daemon/src/../include/utils/BlockingThread.h:119:9: error: use of undeclared identifier 'queue_'; did you mean 'kqueue'?
/usr/include/sys/event.h:323:9: note: 'kqueue' declared here
/Users/stebro/product/daemon/src/../include/utils/BlockingThread.h:119:15: error: member reference base type 'int ()' is not a structure or union
/Users/stebro/product/daemon/src/../include/utils/BlockingThread.h:126:16: error: use of undeclared identifier 'queue_'
Couldn't find usr for ClassDecl c bad_alloc def /usr/include/c++/4.2.1/new:58:9 C++ base class specifier r std::bad_alloc /Volumes/ProductToolChain/include/tbb/internal/../tbb_exception.h:50:31 /Volumes/ProductToolChain/include/tbb/tbb_exception.h:50:7:
Fixit for /Users/stebro/product/daemon/include/utils/BlockingThread.h:111:9: Replace 6 characters with "kqueue"
Fixit for /Users/stebro/product/daemon/include/utils/BlockingThread.h:119:9: Replace 6 characters with "kqueue"
Andersbakken commented 8 years ago

Sorry about the delay.

Maybe the paths get resolved wrong somehow. Can you send the output of this command:

rc --sources ~/product/daemon/src/services/WorkItemBlockingThread.cpp

I'm assuming /Volumes/ProductToolChain/qt-5.5/lib/QtCore.framework/Headers should contain the QSharedPointer header.

Does this problem happen for all projects you've tried it with or is it specific to this one? Does a minimal Qt-based project also fail?

Anders

Andersbakken commented 8 years ago

Were you able to figure out anything about this?