2012-07-30 16 views
7

Chcę dołączyć makefile z biblioteki zewnętrznej w makefile mojego własnego oprogramowania. Najprostszym byłoby ustalenie kodu CMake dla pliku Makefile odpowiadającego include ${dir}/makefile.Dołącz zewnętrzne makefile z CMake

Ale może powinienem podać trochę kontekstu. Próbuję włączyć PETSc (i SLEPc) do mojego kodu. Oto kod z przykładu używając SLEPc (choć PETSc jest prawie taka sama):

hello: hello.o chkopts 
     -${CLINKER} -o hello hello.o ${SLEPC_LIB} 
     ${RM} hello.o 

include ${SLEPC_DIR}/conf/slepc_common 

Jak widać, wymaga ono obejmować konkretnego makefile, który zawiera kilka innych makefile. To trochę dziwne, ponieważ wydaje się, że łatwiej byłoby po prostu mieć katalog włączeń, ale najwyraźniej jest w tym więcej, niż rozumiem. W każdym razie, moim pierwszym rozwiązaniem było po prostu dołączenie pliku makefile, którego chce i sprawdzić, czy to działa.

Odpowiedz

0

Istnieje include method jako część CMake. Jeśli prawidłowo ustawisz zakres zasad (który nie zadziałał, dopóki nie wierzę w 2.8), powinien obsłużyć duplikat użycia metody PROJEKT i dać pożądane rezultaty. Nie próbowałem tego na pewno, ale warto spróbować.

1

Uważam ten wymóg nie pasuje CUpewnij za projekt modelu w ogóle były wygenerowany Makefile podczas fazy generacji i jeden z podstawową zasadą CUpewnij jest uczynienie go wieloplatformowym, więc lepszym pomysłem może być:

  1. Przepisz zewnętrzny system zbudowany w skryptach cUpewnij
  2. Dołącz skrypty cUpewnij w projekcie

Jeśli wysiłek jest ogromny, możesz spróbować z add_custom_target/add_custom_command, aby wykonać niektóre polecenia z pudełka, aby poprawić pliki, ale te również przyniosą znaczne wysiłki - wystarczy przeczytać instrukcję i szukać więcej możliwości.