试图在Ubuntu上配置CMake工具链

试图在Ubuntu上配置CMake工具链,cmake,ubuntu-16.04,ninja,cmake-gui,Cmake,Ubuntu 16.04,Ninja,Cmake Gui,该软件最终将在嵌入式Linux平台上运行。首先,我们在同一个文件夹中编写了一个库,其中所有的C文件都在同一个文件夹中,并且在它下面的一个测试文件夹中有C++文件。 迈里布 a、 c b、 c MyLib/测试 test.cpp 这在Windows 10上工作,使用CMake、Ninja和CLangplusdoctest作为测试框架。所有这些工具都安装在vcpkg下 我现在正试图在Ubuntu 16.04上配置并运行所有内容。所有工具和源代码都已从我们的存储库中检索到。我曾尝试使用Qt

该软件最终将在嵌入式Linux平台上运行。首先,我们在同一个文件夹中编写了一个库,其中所有的C文件都在同一个文件夹中,并且在它下面的一个测试文件夹中有C++文件。
  • 迈里布
    • a、 c
    • b、 c
  • MyLib/测试
    • test.cpp
这在Windows 10上工作,使用CMakeNinjaCLangplusdoctest作为测试框架。所有这些工具都安装在vcpkg

我现在正试图在Ubuntu 16.04上配置并运行所有内容。所有工具和源代码都已从我们的存储库中检索到。我曾尝试使用Qt、cmakegui和命令行构建库并进行测试,但没有成功

使用CMake gui,浏览到源和目标后,单击配置按钮会导致错误

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

忍者程序位于~/../vcpkg/downloads/tools/ninja-1.8.2-linux/文件夹中

在尝试从命令行生成时,我遇到了不同的错误

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

编辑:添加

CMakeLists.txt

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)
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/CmakeLists.txt

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)
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)
cmake_最低要求(3.10版)
设置(测试)源
test.cpp
)
查找_包(需要doctest配置)
添加_可执行文件(test_runner test_runner.cpp${test_SOURCES})
目标\编译\定义(测试\运行程序专用\静音\ CXX17 \分配器\无效\弃用\警告)\关于分配器弃用的静音警告
目标(编译)定义(test(runner PRIVATE(test)WIN32(WINNT=0x0601)#目标windows 7
目标链接库(测试运行程序PSOC\u LIB doctest::doctest)
添加测试(所有测试运行程序)

在Windows下,
test
文件夹中的文件即使在
build\u TESTS
关闭时也会生成。在Linux下,
test
Testing
文件夹仅在启用了
BUILD\u TESTS
时创建。

我创建了一个shell脚本,用于构建可执行的测试文件

#!/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

您的路径中是否有
ninja
可执行文件?这就是错误消息所说的。不。我运行了
ninja
,它说使用
sudo安装ninja
ninjabuild
。我选择了忍者。看起来可执行文件是
/usr/sbin/ninja
。这是正确的吗?你是说
/usr/bin/ninja
?子目录
sbin/
用于管理实用程序(通常需要相应的权限),但
ninja
不是此类工具。否<代码>usr/sbin/ninja是一个22.9KB的程序。相关的文本文件显示它是一个守护进程。我在
usr/bin
中没有找到任何新文件。因此您需要安装ninja构建工具,并确保
ninja
可执行文件的目录位于
PATH
变量中。