2014-06-30 39 views
1

内我在一家詹金斯环境中使用CMake的构建共享对象,并希望建立从源头的protobuf编译器。从源代码构建编译器“的protobuf”,并用它来与它从cmake的

这一切工作,但在下一步我试图用编译器来翻译我的原始文件不起作用,导致它找不到它自己的共享对象。我已经尝试在CMakeLists.txt文件中定义搜索路径,但它不会检测我的存储库树$PRJ_MIDDLEWARE/protobuf/lib中的共享对象位置。我试着告诉CMake的或系统中通过定义搜索:

set(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} "$ENV{PRJ_MIDDLEWARE}/protobuf/lib") 
set(ENV{LD_LIBRARY_PATH} "$ENV{PRJ_MIDDLEWARE}/protobuf/lib:$ENV{LD_LIBRARY_PATH}") 

但在试图调用protoc编译器我刚建立时,它总是失败。我试图从调用''ldconfig'' CMake的但原因詹金斯用户没有这样做的权利不起作用。目前,我唯一的解决方案是登录到构建服务器,手动执行此操作为root。但那不是我想要做的事......下一个版本移动到一个新目录 - 这必须再次完成。我还有其他选择吗?优选直接从CMake的,从詹金斯或者甚至协议缓冲器

谢谢

回答

0

两个想法浮现在脑海中:

  1. 构建protobuf的编译器为静态二进制文件(我不知道这是可能的,但它通常是。)
  2. 设置PATH环境变量在调用cmake之前指向protoc共享库的位置。