首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Ubuntu上配置CMake工具链

在Ubuntu上配置CMake工具链
EN

Stack Overflow用户
提问于 2019-09-27 21:34:56
回答 1查看 786关注 0票数 0

该软件最终将在嵌入式Linux平台上运行。首先,我们编写了一个库,其中所有C文件都在同一个文件夹中,C++文件在它下面的一个测试文件夹中。

  • a.c
  • b.c

  • MyLib MyLib

  • MyLib/test

这在Windows 10上工作,使用CMakeNinjaCLang + doctest作为测试框架。所有这些工具都安装在vcpkg下。

我现在正在尝试在Ubuntu16.04上配置和运行所有的东西。所有的工具和源代码都已从我们的存储库中检索出来。我试图用Qt、cmake和命令行构建库并进行测试,但没有成功。

使用CMake-gui,在浏览到源和目标后,单击“配置”按钮将导致错误。

CMake错误: CMake无法找到与“忍者”相对应的构建程序。CMAKE_MAKE_PROGRAM未设定。

忍者程序位于~/./vcpkg/下载/tools/忍者-1.8.2-linux/文件夹中。

在尝试从命令行构建时,我遇到了不同的错误。

是否有使用受控工具而不是环境中的配置的示例?

编辑:添加

CMakeLists.txt

代码语言:javascript
复制
cmake_minimum_required(VERSION 3.14)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)

project(PSOC_LIB)

option(BUILD_TESTS "bulid tests project" OFF)

set(psoc_lib_VERSION_MAJOR 0)
set(psoc_lib_VERSION_MINOR 1)
set(psoc_lib_VERSION_PATCH 0)
set(psoc_lib_VERSION "${psoc_lib_VERSION_MAJOR}.${psoc_lib_VERSION_MINOR}.${psoc_lib_VERSION_PATCH}")

set(PROJ_NAME "\"PSOC Library\"") # PROJECT_NAME is a predefined variable
set(PROJECT_DESCRIPTION "\"Crossplatform library for products\"")

configure_file(include/psoc/config.h.in
    ${CMAKE_BINARY_DIR}/include/psoc/config.h
)

set(SOURCES
# 5 *.c files
    )

add_library(PSOC_LIB ${SOURCES})


target_include_directories(PSOC_LIB PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include)
target_compile_definitions(PSOC_LIB PRIVATE _CRT_SECURE_NO_WARNINGS=1)

if (BUILD_TESTS)
    include(CTest)
    enable_testing()
    add_subdirectory(test)
endif (BUILD_TESTS)

test/CmakeLists.txt

代码语言:javascript
复制
cmake_minimum_required(VERSION 3.10)

set(TEST_SOURCES
    test.cpp
)

find_package(doctest CONFIG REQUIRED)

add_executable(test_runner test_runner.cpp ${TEST_SOURCES})
target_compile_definitions(test_runner PRIVATE _SILENCE_CXX17_ALLOCATOR_VOID_DEPRECATION_WARNING) #silence warnings about allocator<void> deprecation
target_compile_definitions(test_runner PRIVATE _WIN32_WINNT=0x0601) #target windows 7
target_link_libraries(test_runner PSOC_LIB doctest::doctest)

add_test(all_tests test_runner)

test下,即使BUILD_TESTS关闭,也会生成BUILD_TESTS文件夹中的文件。在Linux下,testTesting文件夹只有在BUILD_TESTS打开时才会创建。

EN

回答 1

Stack Overflow用户

发布于 2019-10-04 13:41:23

我创建了一个shell脚本来构建一个可执行的测试文件。

代码语言:javascript
复制
#!/bin/bash
# Build a debug version of the PSOC_LIB and related tests
mkdir build
cd build
../../../vcpkg_pml/vcpkg/downloads/tools/cmake-3.14.0-linux/cmake-3.14.0-Linux-x86_64/bin/cmake -G Ninja -DCMAKE_BUILD_TYPE=Debug -S ../
ninja
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58141568

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档