afrl-rq / OpenUxAS-SoI

Project for multi-UAV cooperative decision making
Other
71 stars 38 forks source link

How are sqlite constants in scope? #88

Closed Ptival closed 5 years ago

Ptival commented 5 years ago

I am trying (and failing) to compile OpenUxAS on nix. The following line is causing me trouble:

https://github.com/afrl-rq/OpenUxAS/blob/30872fb3a008e8016ca1458e1ae4585c97f679f4/src/Utilities/UxAS_DatabaseLoggerHelper.cpp#L76

I'm not sure what brings SQLITE_OPEN_READWRITE in scope here. None of the headers seem to include <sqlite3.h> (even transitively).

<SQLiteCpp/Database.h> only defines OPEN_READWRITE as an alias for it: https://github.com/SRombauts/SQLiteCpp/blob/4f60c90f32b7332f8a95bab6b5d99eb9ea7fcc50/include/SQLiteCpp/Database.h#L36

So at this point, I'm inclined to believe that the constant is in scope not via includes, but I'm not sure what the mechanism to do this is. Does someone know more about this?

Ptival commented 5 years ago

For the record, my setup runs, from the build directory, the command:

clang++
 -Isrc/Utilities/33468ce@@utilities@sta
 -Isrc/Utilities -I../src/Utilities
 -Isrc/Utilities/../../src/Includes
 -I../src/Utilities/../../src/Includes
 -Isrc/Utilities/../../src/Plans
 -I../src/Utilities/../../src/Plans
 -Isrc/LMCP
 -I../src/LMCP
 -I../3rd/PugiXML/src
 -I/nix/store/1rxw7h42ap7wj7kvp9hpyz1xyxrsh34w-sqlite-3.26.0-dev/include
 -I/nix/store/gssbvajmnpf838n9hazvfxx6bxwkg57q-zeromq-4.3.0/include
 -Xclang
 -fcolor-diagnostics
 -pipe -Wall -Winvalid-pch -Wnon-virtual-dtor -Wextra -Wpedantic -O3
 -std=c++11 -Wall
  -MD -MQ 'src/Utilities/33468ce@@utilities@sta/UxAS_DatabaseLoggerHelper.cpp.o'
 -MF 'src/Utilities/33468ce@@utilities@sta/UxAS_DatabaseLoggerHelper.cpp.o.d'
 -o 'src/Utilities/33468ce@@utilities@sta/UxAS_DatabaseLoggerHelper.cpp.o'
 -c ../src/Utilities/UxAS_DatabaseLoggerHelper.cpp
Ptival commented 5 years ago

Nevermind, I figured it out. You're depending on SQLiteCpp version 1.3.1, whose SQLiteCpp/Database.h exposes sqlite3.h. In subsequent versions of SQLiteCpp, they no longer expose it directly.