linux下jsoncpp编译

折腾了一顿,我使用ubuntu16.04编译的jsoncpp,由于使用的芯片工程需要16.04,无法使用最新的ubuntu系统。

发现jsoncpp编译时,

CMake Error: Could not find CMAKE_ROOT !!! CMake has most likely not been installed correctly. Modules directory not found in /usr/local/share/cmake-3.5 cmake version 3.5.2 CMake suite maintained and supported by Kitware (kitware.com/cmake). 

workspace/tools/jsoncpp/build/debug#

 DBUILD_SHARED_LIBS=ON -DCMAKE_INSTALL_INCLUDEDIR=include/jsoncpp -DARCHIVE_INSTALL_DIR=. -G "Unix Makefiles" ../.. CMake Error: Could not find CMAKE_ROOT !!! CMake has most likely not been installed correctly. Modules directory not found in /usr/local/share/cmake-3.5 CMake Error: Error executing cmake::LoadCache(). Aborting.

编译时出这个错的原因是由于cmake版本太低了,我把cmake版本升级到了。

cmake version 3.31.4 

可以cmake成功。

然后在交叉编译时,在CMakeLists.txt中把test配置为off,可以交叉编译成功了。 

### Linux编译 C++ 库的安装配置与使用说明 在 Linux 系统编译和使用 C++ 库通常涉及以下几个方面:安装必要的工具链、设置环境变量以及通过构建系统管理依赖关系。以下是关于如何在 Ubuntu 20.04 上完成这些操作的具体指导。 #### 工具链准备 为了能够成功编译 C++ 文件,需要先确保开发环境中已经安装了 GCC 或 Clang 编译器及相关工具链。可以通过 `apt` 包管理器快速安装基础组件: ```bash sudo apt update && sudo apt install build-essential cmake gcc g++ ``` 这一步会安装 GNU 的核心工具集,包括但不限于 `gcc`, `g++`, 和 `make`[^1]。 #### 配置 C++ 标准版本支持 现代 C++ 开发往往需要用到较新的标准特性 (如 C++11, C++14),因此建议显式指定目标标准来避免兼容性问题。例如,在终端中可以直接运行以下命令以启用对应的标准支持: ```bash g++ -std=c++11 -o output_file source_file.cpp g++ -std=c++14 -o output_file source_file.cpp ``` 如果经常切换不同版本,则可以考虑创建别名或者脚本来简化流程[^2]。 #### OpenGL 支持下的项目构建 对于图形处理领域内的应用来说,集成第三方库比如 FreeGLUT 是常见的需求之一。下面展示了一个基于 CMake 构建系统的例子,用于解决此类场景中的路径查找难题。 假设当前工作目录结构如下所示: ``` MyDemo/ ├── src/ │ └── main.cpp └── CMakeLists.txt ``` 我们需要额外定义一个辅助模块帮助定位 freeglut 头文件位置及其链接选项。具体做法是在项目的子目录 `build/CMakeModules/FindFREEGLUT.cmake` 中编写相关内容[^3]: ```cmake # FindFreeGLUT.cmake find_path(FREEGLUT_INCLUDE_DIR NAMES GL/freeglut.h) find_library(FREEGLUT_LIBRARY NAMES glut) include(FindPackageHandleStandardArgs) find_package_handle_standard_args(FreeGLUT DEFAULT_MSG FREEGLUT_LIBRARY FREEGLUT_INCLUDE_DIR) mark_as_advanced(FREEGLUT_INCLUDE_DIR FREEGLUT_LIBRARY) set(FREEGLUT_LIBRARIES ${FREEGLUT_LIBRARY}) set(FREEGLUT_INCLUDE_DIRS ${FREEGLUT_INCLUDE_DIR}) ``` 随后修改根级 `CMakeLists.txt` 来引入上述自定义逻辑并声明最终可执行产物所需的参数: ```cmake cmake_minimum_required(VERSION 3.16) project(MyOpenGLProject LANGUAGES CXX) list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/../build/CMakeModules") find_package(FreeGLUT REQUIRED) add_executable(${PROJECT_NAME} src/main.cpp) target_include_directories(${PROJECT_NAME} PRIVATE ${FREEGLUT_INCLUDE_DIRS}) target_link_libraries(${PROJECT_NAME} PRIVATE ${FREEGLUT_LIBRARIES}) set_target_properties(${PROJECT_NAME} PROPERTIES CXX_STANDARD 14) ``` 最后回到顶层调用常规方式生成 Makefile 并启动实际编译过程即可: ```bash mkdir -p build && cd build cmake .. make ./MyOpenGLProject ``` 以上步骤涵盖了从基本环境搭建到高级功能实现的整体思路,适用于大多数日常开发任务情境之中。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值