求大神, cmake编译目录问题, 求解答

goalkeeper1983 2016-05-30 02:49:06
我写了一个CMakeLists.txt来进行编译protobuff类, 将这些类生成一个so文件, 我在CMakeLists.txt里面需要包含google文件夹所在的目录, 但是当我将这文件写为相对路径的时候就报"google/protobuf/stubs/common.h: No such file or directory"错误, 当我写为绝对路径的时候就能编译过.
CMakeLists.txt文件如下
PROJECT(protofile)
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
INCLUDE_DIRECTORIES( ${PROJECT_SOURCE_DIR}/. )
INCLUDE_DIRECTORIES( ${PROJECT_SOURCE_DIR}/cpp )
INCLUDE_DIRECTORIES( /opt/Games2.0/comm/ )

LINK_DIRECTORIES( ${PROJECT_SOURCE_DIR}/../../libs/linux )
AUX_SOURCE_DIRECTORY( . DIR_SRCS)

SET( CMAKE_BUILD_TYPE Release )
SET( LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR} )
file(GLOB_RECURSE SRC_FILES ${PROJECT_SOURCE_DIR}/cpp/*.cc)
add_definitions(-g -fshort-wchar)
link_libraries( libprotobuf-lite.a )
add_library( protofile SHARED ${DIR_SRCS} ${SRC_FILES} )


当我把上面INCLUDE_DIRECTORIES( /opt/Games2.0/comm/ ) 改为INCLUDE_DIRECTORIES( ${PROJECT_SOURCE_DIR}/../comm)就说找不到google的文件, 目录结构应该都是对的

目录结构如下
comm--
|----google文件夹, 就是google protobuff 的头文件, 这个是直接从网上下载的, 没有问题
|----protomsg文件夹--|
|----cpp文件夹, 通过proto应用程序转换.proto文件生成的.h和.cc文件
|----protobuffhead.h 包含有cpp文件夹下的头文件
|----CMakeList.txt 刚刚上面那个文件
跟comm目录同一级目录下有libs/linux文件, 里面存放有自己编译protobuff源文件生成的so和a文件

protobuffhead.h 源码很简单,就是一个头文件

#include "./cpp/CMD_Game_Svr.pb.h
using namespace google::protobuf;

















...全文
680 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2016-05-31
  • 打赏
  • 举报
回复
正确设置相应的环境变量。 再细读一遍CMake联机文档。 ……
goalkeeper1983 2016-05-30
  • 打赏
  • 举报
回复
问题没人能解了啊?

3,882

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧