2015-10-23 61 views
1

有沒有一個簡明的文檔或例子,說明如何在CMake中將.pro項目文件作爲「外部項目」使用現有的QMake項目?這可以在qtcreator中通過將一個項目標記爲另一個項目的依賴來完成,但使用ExternalProject()CMake語法更明確地定義它會更好。如何在CMake中將現有的QMake項目(.pro項目文件)用作「外部項目」?

相關問題:CMake: How to build external projects and include their targets

回答

0

類似這樣的工作。然後,您可以通過打開.pro文件從主CMake項目樹中的qtcreator,編輯這些文件;非常適合在大型cmake構建樹的一部分SomeGarbageApplication中快速迭代QT小部件。

macro(DeclareProjectFiles Tag Filez) 
######### Trick: use this syntax to make arbitrary files 
#########    appear in IDE project. ####################### 
### Note: pass in the raw name of a list variable, 
### since it will get expanded here in this macro. 
    add_custom_target(${Tag}_files ALL 
        pwd 
        COMMAND ls -ltrh 
        COMMENT " ${Tag} files thunk... got list: [ ${${Filez}} ]" 
        VERBATIM 
        SOURCES ${${Filez}} 
        )  
endmacro() 

    message(STATUS "QT_QMAKE_EXE is: ${QT_QMAKE_EXECUTABLE}") 

set(Z SomeGarbageApplication) 
file(GLOB ${Z}_Files 
      ./*.cpp 
      ./*.h 
      ./*.ui 
      ./*.pro 
      ./*.png 
      ./*.jpg) 

DeclareProjectFiles(${Z}_grbg ${Z}_Files) 

add_custom_target(${Z}_pro ALL) 

set(ExtraQMakeArgs -r -spec linux-g++ CONFIG+=release) 

# note: use killall because this can/will fail if the exe is running 
#  But, need || true to not fail build when it's not running. 

add_custom_command(TARGET ${Z}_pro 
        COMMAND killall 
        ARGS  -q -9 -v ${Z} || true 
        COMMAND ${QT_QMAKE_EXECUTABLE} 
        ARGS  -query 
        COMMAND ${QT_QMAKE_EXECUTABLE} 
        ARGS  ${CMAKE_CURRENT_SOURCE_DIR}/${Z}.pro ${ExtraQMakeArgs} 
        COMMAND make ${Z} 
        ARGS  -j4 
        COMMAND cp 
        ARGS  ${Z} ${CMAKE_CURRENT_SOURCE_DIR}/${${Z}_config} ${CMAKE_BINARY_DIR}/bin/ 
        WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} 
        VERBATIM 
        )  
################################################################# 
相關問題