История изменений
Исправление XMs, (текущая версия) :
Как я это вижу: y тебя есть библиотека, представленная набором классов. Ты хочешь какой-то класс протестировать, и для доступа ко внутренним полям хочешь класс теста сделать friend (ужасное решение, но пусть). Значит, для сборки без тестов, например, релизной, тебе это не надо. Значит, имеет место быть раз:
#include <build-type.h>
…
class Foo
{
...
#ifdef TEST_BUILD
friend class FooTest;
#endif // TEST_BUILD
...
};
Два (какой-нибудь build-type.h.in):
#ifndef BUILD_TYPE_H
#define BUILD_TYPE_H
#cmakedefine TEST_BUILD
#endif // BUILD_TYPE_H
Три, корневой CMakeLists.txt:
option(TEST_BUILD "Define it if tests should be built" OFF)
configure_file(build-type.h.in build-type.h)
include_directories(${CMAKE_BUILD_DIR})
Нужны тесты — делаешь
cmake -DTEST_BUILD=ON <path/to/sources>
Мне кажется, это то, чего ты хочешь. Могу ошибаться
Исправление XMs, :
Как я это вижу: У тебя есть библиотека, представленная набором классов. Ты хочешь какой-то класс протестировать, и для доступа ко внутренним полям хочешь класс теста сделать friend (ужасное решение, но пусть). Значит, для сборки без тестов, например, релизной, тебе это не надо. Значит, имеет место быть раз:
#include <build-type.h>
…
class Foo
{
...
#ifdef TEST_BUILD
friend class FooTest;
#endif // TEST_BUILD
...
};
Два (какой-нибудь build-type.h.in):
#ifndef BUILD_TYPE_H
#define BUILD_TYPE_H
#cmakedefine TEST_BUILD
#endif // BUILD_TYPE_H
Три, корневой CMakeLists.txt:
option(TEST_BUILD "Define it if tests should be built" OFF)
configure_file(build-type.h.in build-type.h)
include_directories(${CMAKE_BUILD_DIR})
Нужны тесты — делаешь
cmake -DTEST_BUILD=ON <path/to/sources>
Мне кажется, это то, чего ты хочешь. Могу ошибаться
Исходная версия XMs, :
Как я это вижу: У тебя есть библиотека, представленная набором классов. Ты хочешь какой-то класс протестировать, и для доступа ко внутренним полям хочешь класс теста сделать friend (ужасное решение, но пусть). Значит, для сборки без тестов, например, релизной, тебе это не надо. Значит, имеет месть быть раз:
#include <build-type.h>
…
class Foo
{
...
#ifdef TEST_BUILD
friend class FooTest;
#endif // TEST_BUILD
...
};
Два (какой-нибудь build-type.h.in):
#ifndef BUILD_TYPE_H
#define BUILD_TYPE_H
#cmakedefine TEST_BUILD
#endif // BUILD_TYPE_H
Три, корневой CMakeLists.txt:
option(TEST_BUILD "Define it if tests should be built" OFF)
configure_file(build-type.h.in build-type.h)
include_directories(${CMAKE_BUILD_DIR})
Нужны тесты — делаешь
cmake -DTEST_BUILD=ON <path/to/sources>
Мне кажется, это то, чего ты хочешь. Могу ошибаться