LINUX.ORG.RU

История изменений

Исправление 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>

Мне кажется, это то, чего ты хочешь. Могу ошибаться