'原子解決方案'呢?
EX-自動生成的CMakeLists.txt了 「QT MOC」 文件,然後生成項目,取決於所產生的
# inside project level CMakeLists.txt
# run shell script to create the "moc_GUICreator.cpp" auto-generated source file
if(UNIX)
execute_process(COMMAND "sh" ${CMAKE_CURRENT_SOURCE_DIR}/scripts/generate_moc.sh WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/scripts)
endif(UNIX)
.cpp文件凡.SH文件包含:
# generate_moc.sh
echo "generating moc file: moc ../include/GUICreator.h -o ../src/moc_GUICreator.cpp "
moc ../include/GUICreator.h -o ../src/moc_GUICreator.cpp
等效的Windows批處理文件, 「moc_creator_win.bat」:
moc "GUICreator.h" -o "moc_GUICreator.cpp"
沒有嘗試過該L在Windows AST位,但它還是極爲類似應工作,只是在對的CMakeLists.txt如果(UNIX)塊之後:
if(WIN32)
execute_process(COMMAND "cmd" ${CMAKE_CURRENT_SOURCE_DIR}/scripts/moc_creator_win.bat WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/scripts)
endif(WIN32)
所以,基本上,如果你很聰明,你可以做任何你從想要腳本和使用CMake變量作爲參數,我不知道你是否可以要求更多...
的一點是要避免「不可移植的構建類型」,除非你真的需要它攻入一個專門的編譯器,或者不喜歡使用Qt Designer來放置小部件;-)
我覺得很奇怪,這裏的答案是「不」。我剛開始接觸cmake,我開始理解如何使用它(而不是試圖迫使它做一些它不是專門設計的),比如使用out-of-source構建等。但是我知道cmake與cpack捆綁在一起,它可以在Linux和類似系統上生成tarball。如果tarball需要cmake來構建,我不相信它是一個tarball。 – Steve314 2010-07-15 04:04:12
我會仔細看看CPack;) – Voltaire 2010-07-15 20:43:47
CPack生成的壓縮包通常不是用於構建的源代碼壓縮包,而是用於運行系統的二進制壓縮包。 – JesperE 2010-07-15 21:33:37