是什麼在C進行實踐建立(不是一次),它使用同一個庫中的多個項目?據我所知,在CMake中,人們傾向於使用子目錄方法。但是,如果沒有庫源重複,庫不能成爲多個項目的真正子目錄。還有一個頂級的CMakeLists.txt方法,但是我不認爲這是一個好的解決方案,因爲你必須爲每個項目創建它,並且它必須是項目目錄的一個級別,它不能很好地與源代碼控制配合使用(比如GIT),您希望單個項目具有單個存儲庫/目錄。CMake的多個項目中使用相同的庫
0
A
回答
0
我居然在這裏找到可接受的解決方案: http://www.mail-archive.com/[email protected]/msg39062.html 這在某種程度上類似於add_subdirectory
指定上一級目錄的想法,但不污染項目的CMakeLists.txt文件,而是通過CMake參數傳遞相關的項目路徑。這種方式項目的CMakeLists.txt文件似乎服從普通的CMake子目錄層次結構。我必須說,CMake以某種方式強迫我們使用子目錄層次結構感覺有點不對,但我不知道背後的所有原因,所以可能沒關係。
1
的CMake是一個跨平臺的make工具「使」,包括包含子項目的項目。因此,一個來源是否是這個結構的一部分。但恕我直言cmake不是管理一個主要項目樹中的所有項目的工具。
我的做法是建立獨立的項目。每個項目都會構建庫,測試,文檔並將其安裝到項目商店中。在其他庫或應用程序需要其中一個庫的情況下,它將在該項目的cmake文件中引用。
因此這些項目的版本是獨立的,項目是較小的,並且可以根據需要進行組合。
我使用腳本來建立我的所有庫的應用程序。但是這可以被cmake替換。
- 取決於庫
- 添加自定義命令到最頂級的項目,以觸發引用LIB的構建的構建讓最頂級項目的構建。
可能的解決辦法:
add_custom_command(TARGET myapp PRE_LINK
COMMAND cd /mypath/libA && mkdir build && cd build && cmake ../source && make install)
add_custom_command(TARGET myapp PRE_LINK
COMMAND cd /mypath/libB && mkdir build && cd build && cmake ../source && make install)
add_executable(myapp ${SOURCES})
相關問題
- 1. Cmake - 具有多個項目的庫
- 2. 在CMake中使用多個項目
- 3. CMake的:由多個項目
- 4. 使用依賴於另一個庫的庫的CMake項目
- 5. 在Schema.org中使用多個相同類型的項目JSON-LD
- 6. 多個項目,相同的文件
- 7. 縮短多個項目使用相同的ID的錯誤
- 8. 使用動態庫運行cmake項目
- 9. CMake與多個相互依存的項目
- 10. 使用相同的數據庫主機兩個Laravel項目
- 11. Django,使用兩個相同的項目數據庫
- 12. 使用相同數據庫的兩個Django項目
- 13. android多個項目共享相同的庫問題
- 14. 數據庫設計:多個相同類型的項目
- 15. C#使用ArrayList.IndexOf與多個相同的項目
- 16. Git/Sourcetree使用相同的基礎管理多個項目
- 17. 如何爲多個項目使用相同的ContainerRequestFilter?
- 18. Android如何爲多個項目和類使用相同的本機庫(.so)?
- 19. VB.NET在更多的項目中使用相同的子類
- 20. 具有相同項目URL的IIS和多個項目?
- 21. 在grails中使用相同的ID更新許多項目
- 22. 在Zend中的兩個不同項目中使用兩個庫
- 23. MSBuild使用兩個不同的項目構建相同的DLL
- 24. 阻止從vb.net中的多個checkedlistbox檢查相同的項目
- 25. xcode4:如何使用「git存儲庫」與不同計算機上的多個用戶共享相同的項目?
- 26. 如何使用CMake鏈接多個庫
- 27. TFService中的多個相關項目
- 28. 一個庫在Android中使用與此項目錯誤相同的包?
- 29. 多個庫中的相同R包
- 30. 在CMake項目中包含Windows庫
我同意你關於使用多個項目,這就是我的意思。 「每個項目都建立這個lib」 - 但是如果它沒有放在項目的子目錄中,它如何構建庫?我不能將同一個庫源放在多個項目中。它是一個不好的做法,通過以下add_subdirectory調用包含庫爲項目生成?:'add_subdirectory(「傻瓜」 CMake的「$ {} CMAKE_CURRENT_SOURCE_DIR /../ common_library」,「$ {} CMAKE_CURRENT_SOURCE_DIR /../ common_library /建「)' – jozols
AFAIK不可能離開cmake樹(最後嘗試了一些版本之前)。但爲什麼不'cmake' +'make' +'make install'是基礎庫。然後在取決於的CMakeLists.txt中包含** find_library mylib **或** find_package mypackage **?你有沒有找到find_library? –
我的項目使用了大量的庫,我希望一次性構建它們,而不是單獨構建它們,並自己考慮依賴關係。使用add_subdirectory的方法至少從一開始就起作用,但它感覺與CMake有點矛盾:)不知道你的意思是「你有沒有find_library out?」,如果我使用find_library進行構建,不需要使用find_library add_subdirectory。 – jozols