Add options for custom clang binary path in clang compile config constructor (#143)
This commit is contained in:
parent
97a3d550c2
commit
f3e399573f
2 changed files with 33 additions and 3 deletions
|
|
@ -95,6 +95,13 @@ public:
|
||||||
/// and `__cppast_minor__`.
|
/// and `__cppast_minor__`.
|
||||||
libclang_compile_config();
|
libclang_compile_config();
|
||||||
|
|
||||||
|
/// Create the default configuration, using a custom path to the clang binary
|
||||||
|
/// \effects It will set the clang binary as passed, or will search for it as normal if not found
|
||||||
|
/// as well as the libclang system include directory determined by the build system.
|
||||||
|
/// It will also define `__cppast__` with the value `"libclang"` as well as `__cppast_major__`
|
||||||
|
/// and `__cppast_minor__`.
|
||||||
|
libclang_compile_config(std::string clang_binary);
|
||||||
|
|
||||||
/// Creates the configuration stored in the database.
|
/// Creates the configuration stored in the database.
|
||||||
///
|
///
|
||||||
/// \effects It will use the options found in the database for the specified file.
|
/// \effects It will use the options found in the database for the specified file.
|
||||||
|
|
@ -109,6 +116,20 @@ public:
|
||||||
/// path.
|
/// path.
|
||||||
libclang_compile_config(const libclang_compilation_database& database, const std::string& file);
|
libclang_compile_config(const libclang_compilation_database& database, const std::string& file);
|
||||||
|
|
||||||
|
/// Creates the configuration stored in the database, using a custom path to the clang binary
|
||||||
|
///
|
||||||
|
/// \effects It will use the options found in the database for the specified file.
|
||||||
|
/// This does not necessarily need to match the file that is going to be parsed,
|
||||||
|
/// but it should.
|
||||||
|
/// It will also add the default configuration options.
|
||||||
|
/// \notes Header files are not included in the compilation database,
|
||||||
|
/// you need to pass in the file name of the corresponding source file,
|
||||||
|
/// if you want to parse one.
|
||||||
|
/// \notes It will only consider options you could also set by the other functions.
|
||||||
|
/// \notes The file key will include the specified directory in the JSON, if it is not a full
|
||||||
|
/// path.
|
||||||
|
libclang_compile_config(std::string clang_binary, const libclang_compilation_database& database, const std::string& file);
|
||||||
|
|
||||||
libclang_compile_config(const libclang_compile_config& other) = default;
|
libclang_compile_config(const libclang_compile_config& other) = default;
|
||||||
libclang_compile_config& operator=(const libclang_compile_config& other) = default;
|
libclang_compile_config& operator=(const libclang_compile_config& other) = default;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -78,12 +78,14 @@ bool libclang_compilation_database::has_config(const char* file_name) const
|
||||||
namespace
|
namespace
|
||||||
{} // namespace
|
{} // namespace
|
||||||
|
|
||||||
libclang_compile_config::libclang_compile_config()
|
libclang_compile_config::libclang_compile_config() : libclang_compile_config(CPPAST_CLANG_BINARY) {}
|
||||||
|
|
||||||
|
libclang_compile_config::libclang_compile_config(std::string clang_binary)
|
||||||
: compile_config({}), write_preprocessed_(false), fast_preprocessing_(false),
|
: compile_config({}), write_preprocessed_(false), fast_preprocessing_(false),
|
||||||
remove_comments_in_macro_(false)
|
remove_comments_in_macro_(false)
|
||||||
{
|
{
|
||||||
// set given clang binary
|
// set given clang binary
|
||||||
set_clang_binary(CPPAST_CLANG_BINARY);
|
set_clang_binary(clang_binary);
|
||||||
|
|
||||||
// set macros to detect cppast
|
// set macros to detect cppast
|
||||||
define_macro("__cppast__", "libclang");
|
define_macro("__cppast__", "libclang");
|
||||||
|
|
@ -205,7 +207,14 @@ void parse_flags(CXCompileCommand cmd, Func callback)
|
||||||
|
|
||||||
libclang_compile_config::libclang_compile_config(const libclang_compilation_database& database,
|
libclang_compile_config::libclang_compile_config(const libclang_compilation_database& database,
|
||||||
const std::string& file)
|
const std::string& file)
|
||||||
: libclang_compile_config()
|
: libclang_compile_config(CPPAST_CLANG_BINARY, database, file)
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
cppast::libclang_compile_config::libclang_compile_config(
|
||||||
|
std::string clang_binary, const libclang_compilation_database& database,
|
||||||
|
const std::string& file)
|
||||||
|
: libclang_compile_config(clang_binary)
|
||||||
{
|
{
|
||||||
auto cxcommands
|
auto cxcommands
|
||||||
= clang_CompilationDatabase_getCompileCommands(database.database_, file.c_str());
|
= clang_CompilationDatabase_getCompileCommands(database.database_, file.c_str());
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue