C ++ Ошибка проекта CMake Unit Test в VisualStudio - PullRequest
0 голосов
/ 05 марта 2020

Ну, это мой первый пример и моя первая попытка с CMake Unit Test, поэтому я надеюсь, что мои вопросы не будут такими глупыми.

Я пытаюсь структурировать свой проект, включив в него производственные источники (в sr c подпапка) и тесты (в test подпапка). Я использую проект CMake VisualStudio для создания этого.

Прежде всего, я создал проект CMake под названием CMakeTest . Это создает файл CMakeLists.txt , файл CMakeTest. cpp и файл CMakeTest.h . Я думаю, что мне не нужен CMakeTest. cpp файл и CMakeTest.h файл, поэтому я удалил их.

С другой стороны, я добавил два подкаталоги с именами sr c и test , и я добавил несколько файлов в каждый из них, как описано на моем рисунке ниже:

Solution_Explorer_View

Ну, я действительно не знаю, иду ли я по правильному пути до сих пор или нет.

Кроме того, это мои файлы:

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: ошибка: пустой путь

Я хочу знать, если мой ул Изучение хорошо и как исправить проблему здесь. Спасибо!

...