2013-06-10 12 views
6

Mam przykładowy katalog oprogramowania, które zawiera wiele plików z wieloma funkcjami main. Czy mogę połączyć wszystkie te pliki w jeden projekt, skompilować je, a następnie uruchomić konkretne, nie powodując błędu main already defined? Załóżmy, że nie chcę tworzyć osobnego projektu dla każdego pliku cpp.Wiele głównych plików CPP w VisualStudio?

UPDATE

muszę proste rozwiązanie jeden-dwa kliknięcia (jeśli istnieje). Nie chcę rozpowszechniać plików między folderami lub plikami plików refaktorów. Na przykład w Eclipse/Java możesz kliknąć prawym przyciskiem myszy dowolny plik z głównym i uruchomić go. I może być wiele głównych plików w jednym projekcie. Czy jest to możliwe dla VisualStudio/CPP?

UPDATE 2

Wiem, że C++ nie jest Java i Visual Studio nie jest Eclipse. Moje pytanie dotyczy automatyzacji niektórych operacji ręcznych.

+0

Czy chcesz, aby pojawił się pojedynczy program, który działa jako brama do wszystkich innych "głównych" funkcji, lub jednego programu na "główny"? –

+0

VisualStudio może być tym pojedynczym programem. Może skompilować każdy plik zawierający główny plik do oddzielnego pliku EXE i uruchomić go, klikając prawym przyciskiem myszy źródłowy CPP (na przykład). –

+0

C++ to nie Java :) Możesz mieć wiele * projektów * w roztworze, ale nie możesz po prostu uruchomić pliku cpp. – Spook

Odpowiedz

2

Nie pracowałem na OpenCV, ale używa cmake i ma CMakeLists.txt w przykładowym katalogu. Trwają dyskusje na temat budowania próbek za pomocą cmake here.

Cmake nie tworzy niczego samodzielnie, generuje skrypty budujące dla docelowej platformy i powinien być w stanie tworzyć pliki rozwiązań i projektów, które można załadować do Visual Studio.

12

Umieść te funkcje main w oddzielnych przestrzeniach nazw, a następnie określ, który z nich chcesz uruchomić, np.

File1.cpp 

namespace F1 
{ 
    int main(int argc, char * argv[]) 
    { 
     // ... 
    } 
} 

The-real-main.cpp 

int main(int argc, char * argv[]) 
{ 
    if (whatever) 
     return F1::main(argc, argv); 
} 

Edit: W odpowiedzi na dodatkowe informacje.

C++ to nie Java, a VS to nie Eclipse :) Naturalnym sposobem na utrzymanie wielu programów jednocześnie w VS jest umieszczenie wielu projektów (po jednym dla każdego pliku wykonywalnego lub biblioteki) w jednym rozwiązaniu. Jeśli chcesz uruchomić projekt, po prostu kliknij go prawym przyciskiem myszy w Solution Explorer, wybierz Set as Startup Project, a następnie kliknij przycisk Start, aby go uruchomić.

Aby dodać projekt do rozwiązania, kliknij prawym przyciskiem myszy rozwiązanie i wybierz: Add | New project... lub Add | Existing project.

+1

Dobry pomysł, ale wymaga edycji próbek, które są złe. –

+0

Czy można jednym kliknięciem przekonwertować folder z wieloma procesorami CCP na rozwiązanie z wieloma projektami? –

+0

Konwertuj - w praktyce nie. Możesz przygotować całe rozwiązanie z wieloma projektami, a następnie uruchomić je jednym kliknięciem (dwa, faktycznie). – Spook

0

W Visual Studio musisz utworzyć jeden projekt na plik wykonywalny, który chcesz utworzyć.

+1

Czy mogę automatycznie tworzyć te projekty? –

+0

Dzwonki alarmowe rozlegają się w mojej głowie. Dlaczego masz tak wiele plików EXE, które są potrzebne do zautomatyzowania procesu? –

+1

Mam biblioteki (to jest OpenCV) i ma katalog próbek. W każdym razie normalne jest umieszczanie wielu przykładowych plików 'cpp' w jednym katalogu w wielu bibliotekach opensource cpp. Po prostu chcę je szybko skompilować. –

3

w Visual Studio:

Tworzenie jednego "rozwiązanie" - w ramach rozwiązania można utworzyć wiele "projektów". Każdy projekt będzie się kompilował osobno w plik wykonywalny. Kompilacja odbywa się normalnie, inaczej niż "rozładowywanie" niepotrzebnych projektów. Aby ponownie otworzyć jeden z pozostałych projektów, wybierz "przeładuj projekt" z eksploratora rozwiązań.

Ta funkcja jest przydatna do celów studialnych/organizacyjnych, w których jedna grupa plików źródłowych znajduje się we wspólnym "folderze", aby ułatwić wyszukiwanie i dostęp przy jednoczesnym kompilowaniu/debugowaniu osobno. Główną zaletą tego, co mogę powiedzieć, jest to, że można łatwo nawigować po projektach za pomocą eksploratora rozwiązań.

2

Może być najprostszym rozwiązaniem jest użycie wielu konfiguracji kompilacji.Wystarczy utworzyć kilka konfiguracji kompilacji, definiując punkt wejścia dla każdego z nich.

Powiązane problemy