1
我不能將cmake-QT項目劃分爲dirs。如何將cmake項目移動到子目錄?
在根目錄,我有
cmake_minimum_required(VERSION 2.8)
add_subdirectory(RSA)
add_subdirectory(updater_app/states)
add_subdirectory(updater_app)
在updater_app
DIR我有個下面的代碼,並能正常工作:
project(Updater)
cmake_minimum_required(VERSION 2.8)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOMOC ON)
find_package(Qt5Widgets)
find_package(Qt5Quick)
list(INSERT CMAKE_MODULE_PATH 0 "${PROJECT_SOURCE_DIR}/cmake")
include_directories(${Qt5Widgets_INCLUDE_DIRS})
include_directories(${CMAKE_CURRENT_BINARY_DIR})
add_definitions(${Qt5Widgets_DEFINITIONS})
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${Qt5Widgets_EXECUTABLE_COMPILE_FLAGS}")
qt5_generate_moc(main.cpp main.moc)
set(HEADERS worker.h)
set(SRC_LIST main.cpp worker.cpp)
add_executable(Updater ${SRC_LIST} ${src_moc} ${HEADERS})
target_link_libraries(Updater Qt5::Widgets)
target_link_libraries(Updater Qt5::Quick)
target_link_libraries(Updater ${RSALIB})
但在另一個目錄updater_app/states
(的病程凸出名稱類似的代碼和文件 - 不同)不起作用, 它給我一百萬個錯誤,例如:
error:left of '.append' must have class/struct/union
type is 'int'
error: C2664: 'bool QObject::setProperty(const char *,const QVariant &)' : cannot convert argument 2 from 'const char [5]' to 'const QVariant &'
Reason: cannot convert from 'const char [5]' to 'const QVariant'
Source or target has incomplete type
error
等等。當所有的文件與一個cMake文件在同一目錄中時 - 一切都很好。
請幫幫我任何人 - 如何將項目分爲子目錄?
'find_package()'模塊通常會在CMake的緩存中存儲(如果它們已經被執行)。 [這裏](http://stackoverflow.com/questions/11680168))。所以你試圖切換'updater_app/states'和'updater_app'並從頭開始運行它(乾淨的二進制輸出目錄)?一般來說,我會將通用部分移動到您的主CMakeLists.txt中,例如發現Qt5只有一次。關於你的錯誤信息,這似乎是不同的頭版本的問題。你有多個安裝的QT版本?你使用哪種OS/CMake?看起來像Windows/VS。 – Florian
謝謝你的評論!你給了我正確的答案 - 在分割文件夾之後,增加了幾個包括(qstringlost,qvariant)的nesecssery,並且鏈接的問題被更多的智能拆分到文件夾所限制,所以只有一個子項目依賴於其他子項目。 – Mira
不客氣。我已將我的評論轉換爲答案,併爲子目錄拆分添加了一個示例。 – Florian