W moim projekcie mam plik "schematu" i narzędzie, które napisałem, aby wygenerować plik nagłówkowy. Używam cmake i kompilacji źródłowej do budowania aplikacji.Jak wygenerować nagłówek źródłowy za pomocą cmake?
Obecnie muszę ręcznie wygenerować plik nagłówkowy, a następnie skompilować aplikację.
Potem wymyśliłem te instrukcje CMakeLists.txt, ale generują one nagłówek w katalogu budowania zamiast w katalogu źródłowym.
configure_file(generator.pl generator COPYONLY)
configure_file(schema.txt.in schema.txt COPYONLY)
add_custom_command(
OUTPUT generated.h
COMMAND ./generator schema.txt generated.h
DEPENDS mib_schema.txt.in generator.pl
COMMENT "Regenerating header file..."
)
Czy można wygenerować nagłówek w katalogu źródłowym?
edytować (w celu odzwierciedlenia odpowiedź):
Plik można dotrzeć bezpośrednio przez całkowicie kwalifikacjach jego ścieżkę albo z
${CMAKE_CURRENT_SOURCE_DIR}
czyli
${CMAKE_CURRENT_BINARY_DIR}
Tak, aby wygeneruj nagłówek w katalogu źródłowym, poprzedni fragment z CMakeLists.txt stanie się:
add_custom_command(
OUTPUT generated.h
COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/generator.pl ${CMAKE_CURRENT_SOURCE_DIR}/schema.txt.in ${CMAKE_CURRENT_SOURCE_DIR}/generated.h
DEPENDS mib_schema.txt.in generator.pl
COMMENT "Regenerating header file..."
)
co jest prostsze. Dzięki
--to
Właściwie jest to dobry pomysł. Jeśli mogę zapisać wygenerowany plik w katalogu źródłowym, zostanie on umieszczony w pakiecie źródłowym, który jest dokładnie tym, czego chcę (ponieważ w ten sposób użytkownicy mojej biblioteki nie muszą generować pliku, o ile nie modyfikują generatora i/lub plik danych źródłowych.) Oznacza to, że więcej osób może skompilować moją bibliotekę! –