我正在开发一个需要glfw3包的项目。我尝试过安装glfw3,需要访问“/ usr / local / include”。但由于我没有root访问权限,因此拒绝了制作目录GLFW的权限。我怎么能绕过这个?
答案 0 :(得分:1)
你不是。那是 cmake 的默认值。如果您想要一个漂亮的交互式配置,请转到源树的顶层并输入ccmake .
,您可以轻松找到覆盖INSTALL_PREFIX
的选项。如果点击't'
,您会获得更多高级选项。完成后,'g'
将生成Makefile并退出。我在$HOME/local
为我的项目安装了很多本地库。 glfw
就是其中之一。同时将$HOME/local/bin
添加到PATH
和$HOME/local/lib
添加到[DY]LD_LIBRARY_PATH
。它很适合我,有一些本地沙箱可供开发。
更好的是,它安装了lib/pkgconfig/glfw3.pc
,这使我的生活变得更轻松,使用GLFW构建应用程序,使用pkg-config
查询依赖关系,包含路径,库路径,库/框架(PKG_CONFIG_PATH=/Users/brett/local/lib/pkgconfig
在我的shell脚本中设置所有其他.pc
元数据文件。
它还允许我轻松地将GLFW3集成到autotools中。 pkg-config
提供了初始化宏,如:
PKG_PROG_PKG_CONFIG([0.29]) # defines PKG_CONFIG variable.
并且允许我编写一些用户友好的脚本来将GLFW3集成到我的包中,例如,
AC_MSG_RESULT([])
AC_MSG_RESULT([GLFW3 for OpenGL window and event management...])
PKG_CHECK_MODULES_STATIC([GLFW3], [glfw3 >= 3.2.1],
[ac_glfw3_version=`$PKG_CONFIG glfw3 --modversion`],
[ac_glfw3_version=;])
if test "x$ac_glfw3_version" != x ; then
GLFW_VIS_CXXFLAGS=`echo $GLFW3_CFLAGS`
GLFW_VIS_LIBFLAGS=`echo $GLFW3_LIBS`
AC_MSG_RESULT([GLFW3 version: $ac_glfw3_version])
AC_MSG_RESULT([CXXFLAGS: $GLFW_VIS_CXXFLAGS])
AC_MSG_RESULT([LIBFLAGS: $GLFW_VIS_LIBFLAGS])
else
dnl ... something else? ...
AC_MSG_WARN([the vis library will be omitted from the build:])
AC_MSG_RESULT([GLFW3 @ glfw.org])
dnl ... or just AC_MSG_FAILURE? ...
fi
我暂时抵制cmake
。由于真实软件开发的现实,它变得越来越复杂,我觉得它重新发明了autotools
轮。没有20多年的平台怪癖和经验可以借鉴。除了使用cmake
之外,你需要一大堆额外的支持软件来构建那个轮子......