Portál AbcLinuxu, 5. května 2025 18:41

Dotaz: CMake a více bin souborů

8.8.2008 12:18 Lumen | skóre: 1
CMake a více bin souborů
Přečteno: 283×
Odpovědět | Admin
Chtěl bych poradit se CMakem. Můj CMake vygeneruje Makefile, který vytvoří 3 binární soubory. Všechno funguje správně jen mi vadí, že při kompilaci jednotlivých binárních souborů kompiluje stejné zdrojáky vždy znovu. Pro představu mám: main.cpp, bin1.cpp, bin2.cpp, bin3.cpp a zdrojak1.cpp/h, zdrojak2.cpp/h, zdrojak3.cpp/h. Správně by ty zdrojaky měl zkompilovat jen jednou a pak to jen přilinkovat ne? CMake mám následující:
SET( LIBRARIES m curses )

# Create binnary bin1
ADD_EXECUTABLE( bin1 main.cpp 
				zdrojak1.h zdrojak1.cpp
				zdrojak2.h zdrojak2.cpp
				zdrojak3.h zdrojak3.cpp)
target_link_libraries( bin ${LIBRARIES} )
# Create binnary bin2
ADD_EXECUTABLE( bin2 bin1.cpp
				zdrojak1.h zdrojak1.cpp
				zdrojak2.h zdrojak2.cpp
				zdrojak3.h zdrojak3.cpp)
target_link_libraries( bin2 ${LIBRARIES} )
# Create binnary bin3
ADD_EXECUTABLE( bin3 bin3.cpp
				zdrojak1.h zdrojak1.cpp
				zdrojak2.h zdrojak2.cpp
				zdrojak3.h zdrojak3.cpp)
target_link_libraries( bin3 ${LIBRARIES} )
Následně pak po zadání "make" vypadá výstup takto:
Building CXX object CMakeFiles/bin1.dir/main.o
Building CXX object CMakeFiles/bin1.dir/zdrojak1.o
Building CXX object CMakeFiles/bin1.dir/zdrojak2.o
Building CXX object CMakeFiles/bin1.dir/zdrojak3.o
Linking CXX executable bin1
Built target bin1
Building CXX object CMakeFiles/bin2.dir/bin2.o
Building CXX object CMakeFiles/bin2.dir/zdrojak1.o
Building CXX object CMakeFiles/bin2.dir/zdrojak2.o
Building CXX object CMakeFiles/bin2.dir/zdrojak3.o
Linking CXX executable bin2
Built target bin2
Building CXX object CMakeFiles/bin3.dir/bin3.o
Building CXX object CMakeFiles/bin3.dir/zdrojak1.o
Building CXX object CMakeFiles/bin3.dir/zdrojak2.o
Building CXX object CMakeFiles/bin3.dir/zdrojak3.o
Linking CXX executable bin3
Built target bin3
Co dělám špatně? Nebo to dělám správně a opravdu se to musí pokaždé znovu kompilovat? PS: Se CMakem začínám...
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

8.8.2008 12:26 Andrej Herceg | skóre: 43
Rozbalit Rozbalit vše Re: CMake a více bin souborů
Odpovědět | | Sbalit | Link | Blokovat | Admin
Zo spoločných zdrojových kódov sa bude asi musieť urobiť knižnica (inak sa to kompiluje do iných adresárov a teda sa to kompiluje viac krát).
8.8.2008 12:34 Lumen | skóre: 1
Rozbalit Rozbalit vše Re: CMake a více bin souborů
Můžes mě prosím tě trochu víc nasměrovat...? nějak stále tápu.
8.8.2008 13:12 Andrej Herceg | skóre: 43
Rozbalit Rozbalit vše Re: CMake a více bin souborů
Mohlo by to vyzerať približne takto:
FIND_PACKAGE ( Curses REQUIRED )

INCLUDE_DIRECTORIES(
    ${CURSES_INCLUDE_DIR}
)

ADD_LIBRARY( zdrojak
	zdrojak1.h zdrojak1.cpp
	zdrojak2.h zdrojak2.cpp
	zdrojak3.h zdrojak3.cpp
)

SET( LIBRARIES
	m
	${CURSES_LIBRARY}
	zdrojak
)

# Create binnary bin1
ADD_EXECUTABLE( bin1 main.cpp )
TARGET_LINK_LIBRARIES ( bin1 ${LIBRARIES} )
# Create binnary bin2
ADD_EXECUTABLE( bin2 bin1.cpp )
TARGET_LINK_LIBRARIES( bin2 ${LIBRARIES} )
# Create binnary bin3
ADD_EXECUTABLE( bin3 bin3.cpp )
TARGET_LINK_LIBRARIES( bin3 ${LIBRARIES} )
8.8.2008 13:25 Lumen | skóre: 1
Rozbalit Rozbalit vše Re: CMake a více bin souborů
Supr... diky moc - presne to co jsem potreboval.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.