C++ projemi oluşturmak için CMake kullanıyorum ve birden çok çalıştırılabilir ve bir kütüphanesi var (aynı projenin tamamı). Her şey iyi çalışıyor, ancak çalıştırılabilirlerimden biri, kütüphane sınıflarının bir kısmını oluşturan bir kod üretecidir. Tüm jenerasyon çalışmam var ama kütüphane kurulmadan hemen önce bu yürütülebilir dosyayı (kodgen) nasıl arayacağımı anlayamıyorum. Linux ortamındayım. Umarım birisi buna cevap verebilir. CMakeLists.txt
yılındaBir kütüphane oluşturmadan önce projede bir hedef yürütmek için CMake alın
11
A
cevap
17
:
İlk olarak, yürütülebilir tanımlayın:
add_custom_command(OUTPUT generated.cpp generated.hpp
COMMAND marks-code-generator ARGS args here maybe
MAIN_DEPENDENCY input-file.in
DEPENDS marks-code-generator
COMMENT here we go!
VERBATIM)
seçenek VERBATIM
emin platforma özel kılan: Sonra
add_executable(marks-code-generator gen.cpp)
, kaynağı oluşturmak için özel bir komut tanımlamak kaçmak doğru bir şekilde yapılır. COMMENT
, yürütme işi olarak yazdırılacak ve [ 66%] here we go!
gibi bir şey verilecektir.
Son olarak, gerçek program için kaynak listesinde oluşturulan kaynağının adını:
add_executable(some-program generated.cpp generated.hpp non-generated.cpp foo.cpp)
İlgili konular
- 1. Cmake hedef tetikleme yüklemek
- 2. cmake hedef kitaplığı olarak özel hedef
- 3. hedef yeniden yürütmek
- 4. Bir kütüphane için Makefile
- 5. Cmake ile bir kütüphane nasıl bulunur?
- 6. Bir hedef için derleme oluştur
- 7. Raylarda oluşturmadan önce özel doğrulama
- 8. Bir proje için CMake
- 9. Animasyon için bir hedef nasıl belirlenir? Bu soruyu okumadan önce
- 10. CMake, ilgili dosya yollarını kullanarak statik bir kütüphane bulamıyor
- 11. Oluşturmadan önce benzersiz bir değer olup olmadığını kontrol edin
- 12. CLion and CMake: Sadece yürütülebilir bir kütüphane oluşturmuyor musunuz?
- 13. CMake: Bir yolun eksi göreli öğelerinin tam temsilini alın
- 14. CMake kullanıcı tarafından oluşturulmuş kütüphaneler; Hedef
- 15. makefile: başka bir hedeften ek bir hedef ve ek komutlar yürütmek
- 16. Zaman Rölesi Oluşturmadan Önce Kullanıcı İçin Zaman Ayarı
- 17. DOM Oluşturmadan Önce Her Dijital Döngüden Sonra Yürütme İşlevi
- 18. Sbt'de test görevinden önce yürütmek için özel görev nasıl eklenir?
- 19. CMake
- 20. force javascript EventListener bir kez yürütmek için?
- 21. MsBuild: Bir Msbuild hedef var
- 22. CMake belirli bir Boost sürüm kullanın
- 23. Bir eylemi yürütmek için yeni bir Konu oluşturma <T>
- 24. cmake kopya Ben cmake kullanarak bir dizin kopyalamak için bu komutu kullanabilirsiniz gördüm
- 25. CMake
- 26. Bir Doktrin Varlığı dizin alın
- 27. __soapCall'dan önce SOAP XML'i alın?
- 28. cmake işlevlerinin get_prerequisites ve hedef bağımlılık yüklemesi için get_filename_component nasıl kullanılır?
- 29. Tarihi 4 saat önce alın
- 30. Linux'taki bir sistem() in linux'da bir terminal komutu yürütmek için
Teşekkür Jack, işaretleri-kod üreteci simdiki veya basit çıkış bunları hiç generated.cpp/saat dosyaları yazsak stdout'a ve OUTPUT bölümünün bunları yazmasına izin vermek için? Öyleyse yazarken onları sadece bir EOF ile ayırdım? – Mark
Ardışık yapı sistemlerinin çalışmadığı fikrini gittikçe arttırıyorum. Onlar "make" ile çalışmazlar, automake ile çalışmazlar ve "CMake" ile çalıştıklarına inanmıyorum. Bunu tüm CMILLists.txt 'düzeyinde yapamayacağın bir sebep var mı? Çok büyük olursa 'include 'öğesini kullanın. Bir dosyaya çıkmanız gerekiyor. 'Add_custom_command''daki' OUTPUT' satırı sadece CMake'e hangi dosyaları oluşturduğunu söyler (kendi başına çalışmanın bir yolu olmadığından), bu yüzden bir "akış" kelimesini kullanmaya devam edin veya başlığınızı ve kaynağınızı oluşturmak için her şeyi kullanın. –
Teşekkürler Jack, bir CMakeLists'e bakmaya bakacağım, bakmanın daha kolay olacağı gibi görünüyor. – Mark