浏览代码

Merge pull request #453 from bakineggs/master

Add protoc path detection for Mac OS
Feng Xiao 10 年之前
父节点
当前提交
96f1d4ada2
共有 1 个文件被更改,包括 14 次插入0 次删除
  1. 14 0
      src/google/protobuf/compiler/command_line_interface.cc

+ 14 - 0
src/google/protobuf/compiler/command_line_interface.cc

@@ -53,6 +53,10 @@
 #include <google/protobuf/stubs/shared_ptr.h>
 #endif
 
+#ifdef __APPLE__
+#include <mach-o/dyld.h>
+#endif
+
 #include <google/protobuf/stubs/common.h>
 #include <google/protobuf/stubs/stringprintf.h>
 #include <google/protobuf/compiler/importer.h>
@@ -186,6 +190,16 @@ bool GetProtocAbsolutePath(string* path) {
 #ifdef _WIN32
   char buffer[MAX_PATH];
   int len = GetModuleFileName(NULL, buffer, MAX_PATH);
+#elif __APPLE__
+  char buffer[PATH_MAX];
+  int len = 0;
+
+  char dirtybuffer[PATH_MAX];
+  uint32_t size = sizeof(dirtybuffer);
+  if (_NSGetExecutablePath(dirtybuffer, &size) == 0) {
+    realpath(dirtybuffer, buffer);
+    len = strlen(buffer);
+  }
 #else
   char buffer[PATH_MAX];
   int len = readlink("/proc/self/exe", buffer, PATH_MAX);