скомпилировать один класс / файл в визуальной студии

Способ иметь отдельную реализацию выглядит следующим образом.

//inner_foo.h

template <typename T>
struct Foo
{
    void doSomething(T param);
};


//foo.tpp
#include "inner_foo.h"
template <typename T>
void Foo<T>::doSomething(T param)
{
    //implementation
}


//foo.h
#include <foo.tpp>

//main.cpp
#include <foo.h>

inner_foo имеет форвардные объявления. foo.tpp имеет реализацию и включает inner_foo.h; и foo.h будет иметь только одну строку, чтобы включить foo.tpp.

Во время компиляции содержимое foo.h копируется в foo.tpp, а затем весь файл копируется в foo.h после который он компилирует. Таким образом, ограничений нет, и именование согласовано в обмен на один дополнительный файл.

Я делаю это, потому что статические анализаторы для кода разбиваются, когда он не видит передовые объявления класса в * .tpp. Это раздражает при написании кода в любой среде IDE или с помощью YouCompleteMe или других.

34
задан Ravisha 25 February 2010 в 06:38
поделиться

2 ответа

Ctrl + F7 скомпилирует только активный исходный файл .

Найдите пункт Скомпилировать в нижней части меню Сборка .

Конечно, вам все равно придется выполнить сборку перед тестированием, но если вам просто нужна быстрая проверка работоспособности после изменения исходного файла, это может быть удобно.

43
ответ дан 27 November 2019 в 17:01
поделиться

Гранулярность компиляции - DLL, поэтому нет возможности сделать то, о чем вы спрашиваете.

Или вы имеете в виду, что вы компилируете все решение для одного изменения (или, по крайней мере, VS проверяет, все ли проекты требуют сборки)? Есть опция в 'project and solution' / 'Build and run', 'only build startup projects and dependencies on Run', которая помогает.

Отредактировано: Ctrl-f7 для 'build file' - это для C++ проектов.

1
ответ дан 27 November 2019 в 17:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: