2017-10-06 7 views
0

私はこのdocと私のカスタムウィジェットを展開しようとするが、私は唯一の.hとDLLのコンパイル時に、コピーの.libと.PDBではありませんされています。私は、コンフィギュラとき展開カスタムQtのウィジェット

これが私の.PROですコピーディレクティブ

message(Building...) 
QT   += widgets designer 

PLUGIN_CLASS_NAME = QKWidgets 

QTDIR_build { 
    message(Qt Build) 
    # This is only for the Qt build. Do not use externally. We mean it. 
    PLUGIN_TYPE = designer 
    load(qt_plugin) 
    CONFIG += install_ok 
} else { 
    message(Public Build) 
    # Public example: 

    TARGET  = $$qtLibraryTarget($$TARGET) 
    CONFIG  += plugin debug_and_release 
    TEMPLATE = lib 

    target.path = $$[QT_INSTALL_PLUGINS]/designer 
    #INSTALLS += target 


    headersDataFiles.path = $$[QT_INSTALL_HEADERS]/$$PLUGIN_CLASS_NAME/ 
    headersDataFiles.files = $$PWD/*.h 
    #INSTALLS += headersDataFiles 

    libraryFiles.path = $$[QT_INSTALL_LIBS] 
    CONFIG(debug, debug|release): libraryFiles.files = $$OUT_PWD/debug/*.lib $$OUT_PWD/release/*.pdb 
    CONFIG(release, debug|release): libraryFiles.files = $$OUT_PWD/release/*.lib 

    INSTALLS += target headersDataFiles libraryFiles 

    message(Lib dest: $$[QT_INSTALL_LIBS]) 
    message(Lib src: $$libraryFiles.files) 

} 

message(General Build) 

編集: install_libraryFilesはMakefileで表示されません

EDIT2:

出力:

Project MESSAGE: Building... 
Project MESSAGE: Public Build 
Project MESSAGE: Lib dest: C:/Qt/Qt5.9.0/5.9.1/msvc2017_64/lib 
Project MESSAGE: Lib src: C:/Users/SD/Documents/Studio/MyProject/Widgets/Build/Release/release/*.lib 
Project MESSAGE: General Build 
Project MESSAGE: Building... 
Project MESSAGE: Public Build 
Project MESSAGE: Lib dest: C:/Qt/Qt5.9.0/5.9.1/msvc2017_64/lib 
Project MESSAGE: Lib src: C:/Users/SD/Documents/Studio/MyProject/Widgets/Build/Release/release/*.lib 
Project MESSAGE: General Build 
Project MESSAGE: Building... 
Project MESSAGE: Public Build 
Project MESSAGE: Lib dest: C:/Qt/Qt5.9.0/5.9.1/msvc2017_64/lib 
Project MESSAGE: Lib src: C:/Users/SD/Documents/Studio/MyProject/Widgets/Build/Release/debug/*.lib C:/Users/SD/Documents/Studio/MyProject/Widgets/Build/Release/release/*.pdb 
Project MESSAGE: General Build 
+0

"のメッセージ(のLib SRC:$$ libraryFiles.files)" 何プリントを?生成されたMakefileを表示できますか? – Xplatforms

+0

私の投稿を編集します。私は.libがコピーされない理由を理解しています。これは、libが良い瞬間に作成されていないためです。私がqmakeを2回起動すると、 'libraryFiles'が私のMakefileに現れます。解決策は次のとおりです:QMAKE_POST_LINKしかし、このようなことはしませんでした。 – Sebastien247

答えて

0

使用QMAKE_POST_LINKは私の問題を解決しました:

message(Building...) 

QT   += widgets designer 

PLUGIN_CLASS_NAME = QKWidgets 

QTDIR_build { 
    message(Qt Build) 
    # This is only for the Qt build. Do not use externally. We mean it. 
    PLUGIN_TYPE = designer 
    load(qt_plugin) 
    CONFIG += install_ok 
} else { 
    message(Public Build) 
    # Public example: 

    TARGET  = $$qtLibraryTarget($$TARGET) 
    CONFIG  += plugin debug_and_release 
    TEMPLATE = lib 

    target.path = $$[QT_INSTALL_PLUGINS]/designer 
    INSTALLS += target # headersDataFiles libraryFiles 


    headersDataFiles.path = $$[QT_INSTALL_HEADERS]/$$PLUGIN_CLASS_NAME/ 
    headersDataFiles.files = $$PWD/*.h 

    libraryFiles.path = $$[QT_INSTALL_LIBS] 
    CONFIG(debug, debug|release): libraryFiles.files = $$OUT_PWD/debug/*.lib $$OUT_PWD/debug/*.pdb 
    CONFIG(release, debug|release): libraryFiles.files = $$OUT_PWD/release/*.lib 

    win32 { 
     # Copy *.lib 
     DESTDIR_WIN = $$libraryFiles.path 
     DESTDIR_WIN ~= s,/,\\,g 
     FILES = $$libraryFiles.files 
     FILES ~= s,/,\\,g 

     for(FILE, FILES){ 
      QMAKE_POST_LINK += $$quote(cmd /c copy /y $${FILE} $${DESTDIR_WIN}$$escape_expand(\\n\\t)) 
     } 

     # Copy *.h 
     DESTDIR_WIN = $$headersDataFiles.path 
     DESTDIR_WIN ~= s,/,\\,g 
     FILES = $$headersDataFiles.files 
     FILES ~= s,/,\\,g 

     for(FILE, FILES){ 
      QMAKE_POST_LINK += $$quote(cmd /c copy /y $${FILE} $${DESTDIR_WIN}$$escape_expand(\\n\\t)) 
     } 
    } 
} 
関連する問題