首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【嵌入式单元测试】C语言单元测试框架搭建

它只需要标准的C库,适用于各种计算平台(Linux、windows,以及嵌入式)。 理论上来说,cmocka可以支持任何使用标准C库的交叉编译器。...tools}/aarch64-openwrt-linux-g++) CMAKE_SYSTEM_NAME 指定嵌入式系统类型 CMAKE_SYSTEM_PROCESSOR 指定嵌入式平台 tools 交叉编译器路径...(以实际路径为准) CMAKE_C_COMPILER C交叉编译器 CMAKE_CXX_COMPILER C++交叉编译器 编译 编译需要进入build_dir目录,先执行如下命令生成必要的配置和makefile...,这里只需要暂时把编译器中的定义注释掉,编译完cmocka再改回来即可。...其他编译问题 cmocka仅使用了标准C库,它的跨平台兼容性很好。因此,对于绝大多数的交叉编译器应该都是支持的(除非你的编译器版本很低,对C库的支持不全)。

26400

嵌入式平台 使用GoogleTest框架测试C++代码

实际项目中写的应用层代码为了保证可靠性,需要编写一定的测试用例,进行单元测试。 这里以GoogleTest为例 ,在嵌入式平台上(Amlogic A113x 平台)实现应用层代码的测试。...基本思路: 使用arm交叉编译器编译GoogleTest, 生成可调用的动态库,应用层通过调用GoogleTest动态库完成测试用例的编写 指定arm交叉编译器 GoogleTest默认使用CMake构建...,这里通过修改googletest-release-1.8.0/googletest/CMakeLists.txt,指定 Amlogic A113x 平台使用的编译器, 如下 set(CMAKE_SYSTEM_NAME...Linux) set(CMAKE_SYSTEM_PROCESSOR arm) //根据实际情况,指定交叉编译的路径 set(tools /opt/gcc-linaro-6.3.1-2017.05-x86..._64_arm-linux-gnueabihf) //分别指定C和C++编译器 set(CMAKE_C_COMPILER ${tools}/bin/arm-linux-gnueabihf-gcc) set

4.6K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    升级GCC版本到8.3(多GCC版本共存)

    升级GCC版本到8.3 公司的tlinux2.2自带的是GCC4.8.5(基于CentOS7), 勉强支持C++11, 但目前C++主流社区已经广泛使用C++14, C++17, 老版本的GCC对于新的语言特性的使用是个比较大的障碍..., 目前工作室打算在研未上线项目逐步向TencentOS3进行迁移, TencentOS3自带的GCC版本是8.3, 该版本已经比较完整的支持了C++17的特性, 而我们原来的代码大多是基于GCC4.8.../gcc-8.3.0/bin/g++ cmake /path/to/your/project make 也可以直接在cmake的命令行参数中进行指定: cmake -D CMAKE_C_COMPILER...运行GCC8.3 因为我们不是替换安装的方式, 所以运行需要的库默认是没有被添加到系统路径下的, 我们还需要额外的一步操作才能让gcc8.3编译出的程序正常的运行: export LD_LIBRARY_PATH...ABI到CX11, 与老的库不兼容, 产生的报错如下图所示: image.png 临时的解决方案是在编译的时候添加宏-D_GLIBCXX_USE_CXX11_ABI=0, 禁止编译器使用新的ABI格式

    9K20

    CC++生态工具链——编译构建工具CMakeCMakeList初探

    ${LIBRARY}") ---- 四,CMake常用的环境变量 ---- --CMAKE_C_COMPILER 指定C编译器 ---- --CMAKE_CXX_COMPILER 指定C++编译器 --...构建项目的完整路径 ---- --CMAKE_SOURCE_DIR 源代码树顶层的完整路径 ---- --PROJECT_SOURCE_DIR 当前项目的顶级源目录 ---- --CMAKE_CURRENT_SOURCE_DIR...cmake 当前正在处理的源目录的完整路径 ---- --EXECUTABLE_OUTPUT_PATH 生成的可执行文件路径 ---- --LIBRARY_OUTPUT_PATH 生成的库路径 ---...- --BUILD_SHARED_LIBS 通过add_library构建“STATIC/SHARED”库 ---- --CMAKE_CURRENT_LIST_FILE 当前正在处理的文件列表的完整路径...,通过编写toolchain.cmake指定编译时的工具链 toolchain.cmake样例 #设定目标操作系统的名称 set(CMAKE_SYSTEM_NAME Windows) #设定编译器 set

    3.1K20

    cmake:基于MDK(Keil)的Nationstech.N32G45x平台交叉编译工具链定义

    cmake虽然目前不支持生成μVision的工程文件,但cmake完全可以使用MDK中提供的arm编译器来实现独立于μVision的交叉编译(说到底μVision只是一个为开发者提供易用的GUI界面,真正干活儿的还是编译器...cmake实现交叉编译最重要的就是正确的定义编译工具链(toolchain),本文以Nationstech.N32G45X(国民技术)平台为例说明如何在定义cmake交叉编译工具链来实现使用MDK的armcc...编译器执行单片系统的交叉编译。...)会用到这个环境变量 cmake的交叉编译工具链文件定义如下: n32g45x.toolchain.cmake # toolchain for Nationstech.N32G45X INCLUDE(...,这个工具链文件中编译选项部分是可以正常执行的,链接选项并没有验证是否正确。

    1.2K60

    CMake搭建编译环境总结

    :使用CMake版本、工程名 ② 配置交叉工具:设置编译器、增加编译参数 ③ 包含需要嵌套的子路径CMakeList Server路径 CMakeList ## 指定最低版本 ## 指定最低版本 cmake_minimum_required...## 指定C编译工具 set(CMAKE_C_COMPILER "gcc") ## 指定C++编译工具 set(CMAKE_CXX_COMPILER "g++") 当编译工具链路径被加到环境变量中...在配交叉编译工具时,此处应写对应交叉编译工具链的绝对路径。...,针对代码本身不是错误但是疑似错误或者可能存在风险的地方发出警告,而警告编译选项就是用于控制需要告警的警告类型的。...设置交叉编译工具链方式如下: ## 绝对路径 set(CMAKE_C_COMPILER "xxx/arm-linux-gcc") set(CMAKE_CXX_COMPILER "xxx/arm-linux-g

    2.7K20

    ninja Compiling the C compiler identification source file CMakeCCompilerId.c fai

    在本篇博客文章中,我将为您解释这个错误的原因,并提供一些可能的解决方案。 问题背景 CMake是一个跨平台的构建工具,它可以自动生成和管理构建过程。...在CMakeLists.txt文件中,加入以下一行代码来指定编译器路径: cmakeCopy code set(CMAKE_C_COMPILER /path/to/your/compiler) 将/path...3.0) # 设置项目名称 project(MyProject) # 查找C编译器路径并设置 find_program(CMAKE_C_COMPILER NAMES gcc clang PATHS /...: ${CMAKE_C_COMPILER}") # 其他的项目配置和编译......如果您的C编译器位于其他地方,您可以在PATHS参数中添加相应的路径。如果希望指定一个具体的编译器路径,您可以将CMAKE_C_COMPILER变量设置为实际的路径。

    60810

    超级加速!ccache让 C++ 编译速度飞起来

    一、关于ccacheccache是“compiler cache”的缩写,是一个gcc/g++的c语言编译器缓存。...缓存配置文件路径:Primary config。最近一次使用缓存的时间:Status updated。...(4)在Visual Studio中使用ccache安装并配置ccache工具。在Visual Studio中设置包含ccache的路径。在项目中的编译器设置中选择ccache作为编译器。...,比如:# 找到ccache的安装路径 which ccache # 安装实际路径为:/usr/bin/ccache # 创建软连接,将ccache伪装成g++编译器 ln -s /usr/bin/...ccache只能缓存完整的编译结果,对于中间生成的对象文件等无法实现缓存。ccache主要是为支持标准构建系统而设计的,对于非标准构建系统的支持有限。

    41410

    windows vscode 配置cmake 编译cc++ 基础

    点击 vscode 左侧的扩展图标,打开侧边栏“EXTENSIONS”面板(魔方图标) 2. 点击搜索并安装 chinese 简体中文 3....我的电脑-> 属性 -> 高级系统设置 -> 高级 -> 环境变量 -> 系统变量 -> Path -> 添加上面软件解压的路径,精确到bin目录 -> 重启电脑 2....#--- cmake 案例 ---#project(eisc)#项目名cmake_minimum_required(VERSION 3.10)# 编译要求:cmake 要大于最低版本 3.1 set(CMAKE_C_COMPILER..."gcc")set(CMAKE_CXX_COMPILER "g++")# 设置编译器, 如果没有配置环境变量,可以改为gcc具体文件路径include_directories(../...../core/)# 添加 头文件搜索路径 (.h 搜索路径)add_executable("test.exe" test.cpp)# 生成可执行文件: 将 test.cpp 编译成 test.exe 可执行文件

    1.9K30

    QT的cmake项目工程配置

    QT的项目工程默认使用的是qmake,这本来也没什么问题。但是由于要用到vcpkg这个工具来管理第三方库,好像这个 vcpkg工具只能在cmake的项目中才能使用。...,通过cd命令到你的exe存放的地方,并输入下面的命令: windeployqt -qmldir "源码路径" test.exe --release 命令执行完后,在你exe生成的目录里生成...如果你的源码使用了三方库或者生成了动态链接库,那么需要手动将需要的dll文件复制到目录下,实际运行试试,是不是可以正常运行。...CMAKE_C_COMPILER设置C编译器 CMAKE_CXX_COMPILER设置C++编译器 EXECUTABLE_OUTPUT_PATH设置编译后可执行文件目录 LIBRARY_OUTPUT_PATH...({PROJECT_SOURCE_DIR}/include) 添加头文件路径link_directories({PROJECT_SOURCE_DIR}/lib) 添加链接库的路径add_subdirectory

    3.7K21

    程序员C语言快速上手——工程篇(十三)

    伪目标伪目标就是一个标签,它本身既不是目标文件也不是可执行文件,例如上面例子中的clean,我们可以通过伪目标定义一些命令,然后在make中去执行。...补充说明 实际上完整的Makefile 语法体系是非常复杂灵活的,学习完整Makefile语法不亚于学习一门新的编程语言,而且许多语法功能并不是常用的,另一方面,在大型的复杂工程中,自己手写Makefile...所在文件夹的路径 CMAKE_CURRENT_LIST_FILE 当前CMakeLists.txt文件的完整路径 CMAKE_C_COMPILER和CMAKE_CXX_COMPILER 分别表示C和C+...+编译器的路径 PROJECT_NAME 该变量可获取project命令配置的项目名 可以使用message命令打印这些内置变量的值 cmake_minimum_required (VERSION 2.8...,推荐使用find_library来查找库,因为link_directories命令传入相对路径时,会直接将相对路径传给编译器,导致出现找不到问题。

    3.3K30

    CMake简易指南

    3.20之后的文档会标记该 API 的生效版本cmake 的优势不是性能和易用性,而是通用性与跨平台。...一般来说,CMAKE_C_COMPILER和CMAKE_CXX_COMPILER分别指定 C 和 C++的编译器,如修改则需要同时指定-DCMAKE_TOOLCHAIN_FILE=toolchain.cmake...与本地编译的流程并无不同,交叉指的是执行编译过程的操作系统与运行程序的操作系统不是同一个。...,部分 SDK 已经提供 cmake 工具链,如:Android NDK、TDA4等,未提供工具链的 SDK,可以通过指定编译器路径等信息来编译,也可以基于 SDK 编写工具链文件便于后续项目使用。...交叉编译除了可是使用工具链,也可以在配置阶段通过参数指定编译器等信息实现交叉编译;工具链除了可以用于交叉编译,也可用于编译系统扩展,如:vcpkg 中可用于查找内置的三方库的工具链文件扩展工具链微软开源项目中的工具链文件

    1.2K50

    conan入门(五):conan 交叉编译引用第三方库示例

    通过完整的二进制包管理,它可以为任意数量的不同版本的包创建和重用任意数量的不同二进制文件(用于不同的配置,如架构、编译器版本等),在所有平台上使用完全相同的过程。...总得来说,很简单,只需要有工具链文件,就可以完成。...TOOLCHAIN_FILE 要实现交叉首先要定义好工具链,我有一个DS-5 ARM的交叉编译器(arm-linux-gnueabihf)。...库,显然,conan中央仓库没有预编译好的arm版本的cJSON库,我们需要通过定义环境变量CONAN_CMAKE_TOOLCHAIN_FILE指定工具链文件,执行conan install 时conan...找不到arm平台的库就会自动根据CONAN_CMAKE_TOOLCHAIN_FILE定义的工具链接文件完成arm平台库的编译 $ export CONAN_CMAKE_TOOLCHAIN_FILE=/j

    1.8K30

    如何对 Neuron 源码进行交叉编译

    交叉编译链是为了编译跨平台体系结构的程序代码而形成的由多个子工具构成的一套完整的工具集。当指定了源文件(.c)时,它会自动按照编译流程调用不同的子工具,自动生成可执行文件。...交叉编译链的重点在于交叉编译器,使用不同平台的编译器用来生成可在该平台运行的可执行程序。所有语句都写在跨平台编译工具 CMake 所依赖的规则文件 CMakeLists.txt 中,用于构建整个工程。...执行指令时所使用的编译工具,即上述中安装的相应的编译器。...cmake 通用参数说明-D 配置 cmake 的参数,功能类似于 set;CMAKE_C_COMPILER ,交叉编译宏变量,指定 c 的编译工具;CMAKE_CXX_COMPILER ,交叉编译宏变量...,指定 c++ 的编译工具 ;CMAKE_STAGING_PREFIX ,交叉编译变量,指定安装到主机上的路径 ;CMAKE_PREFIX_PATH,交叉编译变量,指定要编译的文件所在的安装位置;zlog

    1.3K50

    离线安装PySCF程序(1.5及更高版本)

    最后安装PySCF时要用到该路径,里面有所需的库文件。 (4)这里的lib不需要写绝对路径。 3. 编译和安装libxc cd libxc-3.0.0 ....make && make install 上述四步完成后,可以在 /home/$USER/software/cint_and_xc 下发现有bin、include、share和lib四个文件夹。...mf.kernel() 得到结果 converged SCF energy = -1.06111199785749 -1.0611119978574881 小数点第10位以后可能会有点差别,但是不重要,后面已经不是有效数字了...更换C和C++编译器 安装PySCF时默认的编译器是gcc和g++,如果想用icc和icpc,可以打开pyscf/lib/CMakeLists.txt文件,在project一行上面插入两行 set(CMAKE_C_COMPILER...icc的绝对路径) set(CMAKE_CXX_COMPILER icpc的绝对路径) 设定好编译器路径即可。

    1.7K51
    领券