From 942b3ce83635ccf49f7bb7d682c736640893753a Mon Sep 17 00:00:00 2001 From: Maxwell Jeffress Date: Wed, 16 Apr 2025 10:38:30 +1000 Subject: [PATCH] Add library linking support, update --init --- bob | Bin 86776 -> 90896 bytes readme.md | 18 ++++++++++++++++++ src/main.cpp | 34 +++++++++++++++++++++++++++++----- 3 files changed, 47 insertions(+), 5 deletions(-) diff --git a/bob b/bob index d22c85e51d05d8ba2c16bb1a7f299dfb8d373e72..15c6ab14b0eca432959ab1753301b623bb1f8af4 100755 GIT binary patch literal 90896 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 XuRNvmPs`wcdtJBiDQPGJIJeP%!4FSk literal 86776 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
|Y~Jai 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 Bz&-!~ diff --git a/readme.md b/readme.md index 7bb10a9..57129ee 100644 --- a/readme.md +++ b/readme.md @@ -75,3 +75,21 @@ compile; ``` The `compile` line just tells Bob that it's time to compile your code. It will run the compiler with all the options. This is helpful as you don't have to type out your long command to compile everything any time you make a change. + +If you need to use a library, you can add a line like this in your Bobfile: + +``` +library "(library)"; +``` + +This will look in your system's default directory for libraries (usually `/usr/lib`). Specify a custom directory with + +``` +libdir "(libdir)"; +``` + +If you need to include a directory, do it like this: + +``` +include "(include)"; +``` diff --git a/src/main.cpp b/src/main.cpp index 68b1e99..5293114 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -22,8 +22,20 @@ void log(string input) { cout << "\033[37mInfo: \033[39m" << input << endl; } -int compile(string compiler, string source, string binary) { - string cmd = compiler + " " + source + " -o " + binary; +int compile(string compiler, string source, string binary, vector libVector, vector incVector, vector libDirVector) { + string libs; + for (int i = 0; i < libVector.size(); i++) { + libs += (" -l" + libVector[i]); + } + string includes; + for (int i = 0; i < incVector.size(); i++) { + libs += (" -I " + incVector[i]); + } + string libDir; + for (int i = 0; i < libDirVector.size(); i++) { + libs += (" -I " + libDirVector[i]); + } + string cmd = compiler + libs + " " + source + " -o " + binary; log("Compiling with command " + cmd); return system(cmd.c_str()); } @@ -99,9 +111,9 @@ int main(int argc, char* argv[]) { debug("Created source directory"); ofstream srcFile("src/main." + language); if (lang == "1") { - srcFile << "#include \nint main() {\nprintf(\"Hello, World!\\n\");\nreturn 0;\n}\n"; + srcFile << "#include \n\nint main() {\n printf(\"Hello, World!\\n\");\n return 0;\n}\n"; } else if (lang == "2") { - srcFile << "#include \nusing namespace std;\nint main() {\ncout << \"Hello, World!\" << endl;\nreturn 0;\n}\n"; + srcFile << "#include \n\nusing namespace std;\n\nint main() {\n cout << \"Hello, World!\" << endl;\n return 0;\n}\n"; } srcFile.close(); debug("Created source file"); @@ -179,6 +191,9 @@ int main(int argc, char* argv[]) { string compiler; string binary; string source; + vector libraries; + vector includes; + vector libdirs; string editingTarget; @@ -187,7 +202,7 @@ int main(int argc, char* argv[]) { debug("Token is " + parsed[i][j]); if (j == 0) { if (parsed[i][j] == "compile") { - compile(compiler, source, binary); + compile(compiler, source, binary, libraries, includes, libdirs); break; } editingTarget = parsed[i][j]; @@ -202,6 +217,15 @@ int main(int argc, char* argv[]) { } else if (editingTarget == "source") { debug("Setting source"); source = parsed[i][j]; + } else if (editingTarget == "library") { + debug("Adding library"); + libraries.push_back(parsed[i][j]); + } else if (editingTarget == "include") { + debug("Adding include"); + includes.push_back(parsed[i][j]); + } else if (editingTarget == "libdir") { + debug("Adding library directory"); + libdirs.push_back(parsed[i][j]); } } }