CMe

2013-08-25 10 views
10

'da özel oluşturma adımı ekleme CMake'te bazı dosyalar oluşturan bir özel oluşturma adımı eklemeye çalışıyorum. Nasıl çalıştığını bir açıklama bulamadım.CMe

Kaynağında, kaynak, üstbilgi & uygulama dosyalarının C++ için ODB tarafından oluşturulması gereken bir projem var. ODB, sınıf başlıklarını argüman olarak alır ve projemde kullanmak istediğim kaynak dosyaları oluşturur. Bir dosya person.hpp ODB için

add_custom_command(TARGET ${PROJECT_NAME} 
    PRE_BUILD 
    COMMAND odb -o /home/david/dev/ --std c++11 -I/home/david/dev/ -d sqlite --generate- query --generate-schema ${PROMOTER_LIB_PREFIX}/entities/person.hpp 
    DEPENDS ${PROJECT_NAME} 
    VERBATIM 
) 

person-odb.hxx, person-odb.cxx, person-odb.ixx oluştursun ama I''ve şey oluşturmaz kullanılan CKağıt komutunu:

Şu anda aşağıdaki benim CMakeLists.txt komutunu var . Bir terminalde bu komut iyi çalışıyor.

Neyi yanlış yapıyorum?

DÜZENLEME: Sorun aşağıdaki satırları ekleyerek çözülebilir: Benzer bir şeyle, Benim için

set(FAKE_TARGET fakeTarget) 
add_custom_target(fakeTarget 
    odb -o /home/david/dev/ --std c++11 -I/home/david/dev/ -d sqlite --generate-query --generate-schema ${PROMOTER_LIB_PREFIX}/entities/person.hpp 
) 
add_dependencies(${PROJECT_NAME} ${FAKE_TARGET}) 

cevap

14

, sadece kullanın:

add_custom_command(TARGET ${PROJECT_NAME} 
    PRE_BUILD 
    COMMAND odb -o /home/david/dev/ --std c++11 -I/home/david/dev/ -d sqlite --generate- query --generate-schema ${PROMOTER_LIB_PREFIX}/entities/person.hpp 
) 

Biz DEPENDS kullanmayın veya VERBATIM.

DEPENDS seçeneği, komutun yalnızca bu seçeneğe verdiğiniz proje oluşturulduktan sonra yürütülmesi gerektiğini belirtir.

DÜZENLEME: PRE_BUILD seçeneği yalnızca 7 veya daha sonra Visual Studio üzerinde desteklendiğini

Not. Diğer tüm jeneratörler için PRE_BUILD PRE_LINK olarak ele alınacaktır.

Belki de bu yüzden sizin için işe yaramıyor.

etrafında bir eser olabilir (biraz çirkin):

  • sahte bir
  • size güncel proje bağımlı olun
  • POST_BUILD olarak üzerinde özel komutu ekleyin sahte bir proje oluşturun ben kullanıyorum
+0

"DEPENDS" ve "VERBATIM" öğesini sildiğimde hala çalışmıyor. –

+0

@DavidBulczak düzenlememe bak. VS'yi işte kullanıyorum, işte bu yüzden benim için çalışıyor. –

+0

Tamam. Teşekkürler. Gcc/make ve diğer GNU araçlarını kullanıyorum. CMake'de özel oluşturma adımları eklemek için başka yollar var mı? –

1

yoldur:

add_custom_command(
    OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/gen_icinstrtab.hpp 
    COMMAND xsltproc --output ${CMAKE_CURRENT_BINARY_DIR}/gen_icinstrtab.hpp ${CMAKE_SOURCE_DIR}/xml/genictabc.xslt ${CMAKE_SOURCE_DIR}/xml/icminstr.xml 
) 

add_executable(
    du4 

    ${CMAKE_CURRENT_BINARY_DIR}/gen_icinstrtab.hpp 
    . 
    . 
    . 
) 

Anahtar, .hpp dosyalarını add_executable bloğa eklemekti.