Ну, это мой первый пример и моя первая попытка с CMake Unit Test, поэтому я надеюсь, что мои вопросы не будут такими глупыми.
Я пытаюсь структурировать свой проект, включив в него производственные источники (в sr c подпапка) и тесты (в test подпапка). Я использую проект CMake VisualStudio для создания этого.
Прежде всего, я создал проект CMake под названием CMakeTest . Это создает файл CMakeLists.txt , файл CMakeTest. cpp и файл CMakeTest.h . Я думаю, что мне не нужен CMakeTest. cpp файл и CMakeTest.h файл, поэтому я удалил их.
С другой стороны, я добавил два подкаталоги с именами sr c и test , и я добавил несколько файлов в каждый из них, как описано на моем рисунке ниже:
Ну, я действительно не знаю, иду ли я по правильному пути до сих пор или нет.
Кроме того, это мои файлы:
test / CMakeLists.txt
set(Boost_USE_STATIC_LIBS ON)
find_package (Boost COMPONENTS system filesystem unit_test_framework REQUIRED)
include_directories (${TEST_SOURCE_DIR}/src
${Boost_INCLUDE_DIRS}
)
add_definitions (-DBOOST_TEST_DYN_LINK)
add_executable (Test test.cpp)
target_link_libraries (Test
Sqr
${Boost_FILESYSTEM_LIBRARY}
${Boost_SYSTEM_LIBRARY}
${Boost_UNIT_TEST_FRAMEWORK_LIBRARY}
)
add_test (NAME MyTest COMMAND Test)
src / CMakeLists.txt
add_library (Sqr sqr.cpp sqr.h)
add_executable (demo main.cpp)
target_link_libraries (demo Sqr)
CMakeTest / CMakeLists.txt
cmake_minimum_required (VERSION 3.8)
project (TEST)
add_subdirectory (src)
enable_testing ()
add_subdirectory (test)
срк / кв.ч
#ifndef SQR_H
#define SQR_H
double sqr(double);
#endif // SQR_H
срк / кв. cpp
#include "sqr.h"
double sqr(double x) { return x*x; }
src / main. cpp
/* sqr example */
#include <iostream> /* printf */
#include <sqr.h> /* sqr */
using namespace std;
int main()
{
double param, result;
param = 2.0;
result = sqr(param);
printf("sqr(%f) = %f\n", param, result);
return 0;
}
test / test. cpp
#define BOOST_TEST_MODULE SqrTests
#include <boost/test/unit_test.hpp>
#include "sqr.h"
BOOST_AUTO_TEST_CASE(FailTest)
{
BOOST_CHECK_EQUAL(5, sqr(2));
}
BOOST_AUTO_TEST_CASE(PassTest)
{
BOOST_CHECK_EQUAL(4, sqr(2));
}
Выполнение этого вызывает ошибку :
C: \ Users \ wiemz \ OneDrive \ Bureau \ CMakeTest \ out \ build \ x64-Debug \ ninja: ошибка: пустой путь
Я хочу знать, если мой ул Изучение хорошо и как исправить проблему здесь. Спасибо!