试图在Ubuntu上配置CMake工具链
该软件最终将在嵌入式Linux平台上运行。首先,我们在同一个文件夹中编写了一个库,其中所有的C文件都在同一个文件夹中,并且在它下面的一个测试文件夹中有C++文件。试图在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
- 迈里布
- a、 c
- b、 c
- MyLib/测试
- test.cpp
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
变量中。