【发布时间】:2018-08-29 10:25:24
【问题描述】:
我正在尝试使用 Cmake 安装 Log4Cplus。
首先我将 log4cplus 下载到一个名为 3rdparty 的目录中
git clone https://github.com/log4cplus/log4cplus.git --recursive
稍后在常见的 CMakeLists.txt 中我做了以下操作
cmake_minimum_required (VERSION 3.4)
enable_testing()
include(USR_macros_and_functions.cmake)
project (unixpackages)
USR_init_project(unixpackages)
#other packages ...
add_subdirectory(3rdParty/log4cplus)
#other packages ...
USR_add_build_repo_targets()
问题是当我尝试构建时出现以下错误:
-- Installing: /home/compilation/UnixPackagesFareShopping/Output_API/Lib/libvalidator.so
-- Removed runtime path from "/home/compilation/UnixPackagesFareShopping/Output_API/Lib/libvalidator.so"
CMake Error at 3rdParty/log4cplus/src/cmake_install.cmake:36 (file):
file cannot create directory: /usr/local/lib64/cmake/log4cplus. Maybe need
administrative privileges.
Call Stack (most recent call first):
3rdParty/log4cplus/cmake_install.cmake:37 (include)
cmake_install.cmake:48 (include)
我知道我无权将它安装到 /usr/local/lib64/cmake/ 但问题是我不知道我应该在哪里更改路径以将其指向我有权安装它的目录进入。
我尝试查看是否可以在我只找到这个的所有配置和 cmake 文件中找到 lib64
./configure: # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64,
./configure: # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64,
./m4/libtool.m4: # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64,
我是 cmake 的新手,很抱歉这个问题
【问题讨论】:
-
你的意思是在安装过程中?能否将CMAKE_INSTALL_PREFIXwhile 配置设置为您有写入权限的位置,然后重试?
-
我在 log4cplus 的 CMakeLists.txt 文件中添加了 SET(CMAKE_INSTALL_PREFIX ${PROJECT_SOURCE_DIR}/3rdparty/log4cplus) 但没有用。我还发现了类似 ./configure --prefix=/usr/local/httpd 但我不知道应该把它放在哪里。我不想在命令行中添加任何东西
-
变量
CMAKE_INSTALL_PREFIX影响整个项目,包括子项目。 (也就是说,您不能将您的文件安装在/usr/local下,但将与 log4cplus 相关的文件安装到非系统位置)。有关正确设置CMAKE_INSTALL_PREFIX变量的信息,请参阅 that question。 (引用的问题对命令行和CMakeLists.txt文件的修改都有答案。) -
Annnd 它工作了dd 谢谢@Tsyvarev 我做了以下事情:set (CMAKE_INSTALL_PREFIX ${PROJECT_SOURCE_DIR}/3rdParty/log4cplusclea CACHE PATH "Cmake prefix" FORCE)