在構建我自己的項目時需要使用第三方makefile的一些幫助。包括使用cmake時的makefile
回答
有沒有辦法直接到你想要的。 CMake不提供將文件包含到生成文件中的功能。 (即:將一個「3rdparty.mk
」包含到CMake生成的Makefile
中。)您也不能直接在「CMakeLists.txt
」中包含「生成文件類型」(即:生成文件)。 CMake的ExternalProject不會讓你這樣做。
您需要做的是以某種方式「解析」具有您所需信息的生成文件。有很多方法可以做到這一點。例如,您可以編寫一個shell腳本包裝器,它可以根據需要爲您的makefile生成grep文件,然後用您想要定義的變量構建一個CMake命令行,並輸出它或者爲您調用cmake
。根據您對shell(或perl,python等)的使用感覺如何,您可能會覺得這是最好的選擇。
如果您知道這些值永遠不會(或很少更改),您可以將它們硬編碼到您的CMakeLists.txt
(不推薦)或文件中,您可以include()
(更好)。
你也可以留在CMake-land並使用CMake的ExternalProject來幫助你。使用ExternalProject,您可以:
- 獲取您的第三方庫(下載,複製,解壓縮等)
- 修補這些圖書館的Makefile文件
- 運行
make
這些補丁的makefile
現在,我提到的這個補丁是你必須自己寫的東西,並保持你的主要項目的來源。這個補丁的內容將成爲一個新的目標,使編寫一個文件,您可以通過include()
包含在您的CMakeLists.txt
中。你可以簡單地開始,並有這個新的目標(例如:make output_variables
)寫一個set()
命令列表lib_A.cmake
。對此感到滿意後,你可以轉向更復雜的輸出;比如寫一個CMake的find_package()
會理解的lib_A-config.cmake
文件。
當然,最後一個選項可能是最複雜的,但它可能會使您的主項目的維護更容易,減少將來的痛苦。您還將更深入地瞭解CMake。
- 1. 包括cmake的
- 2. Makefile包括SDL
- 3. 包括在CMake的
- 4. 包括與cmake的
- 5. 使用VPATH的Makefile欺騙和包括
- 6. 包括在Makefile中
- 7. Cmake其他包括
- 8. 包括通過CMake
- 9. 包括mysql到cmake
- 10. 包括在kreversi使用cmake(kdegames)lua庫
- 11. Makefile中包括的.depend
- 12. 獲得包括GNU的makefile
- 13. 檢查包括在CMake的
- 14. 如何包括與cmake的
- 15. CMake的包括提高1.54
- 16. QMAKE Makefile中不包括myWidget.o
- 17. CMake包括預編譯庫
- 18. 包括OpenCV庫DLL與CMake
- 19. 包括OpenCV與CMake Linux
- 20. 如何讓CMake使用現有的Makefile?
- 21. 如何在CMake Makefile中包含OpenCV庫
- 22. 使用cmake創建一個無cmake的Makefile
- 23. CMake,Xcode和Unix Makefile
- 24. 設置包括其他的makefile
- 25. Makefile的if語句不包括
- 26. 正確cmake的安裝,包括頭
- 27. CMake的 - 包括第三方文件
- 28. cmake的:如何生成包括頭
- 29. 包括stb_image到CMake的OpenGL項目
- 30. CMake的:當包括外部生成
「我嘗試使用以下內容,但它不起作用......」它不起作用?你期望發生什麼?發生了什麼? – nega
你必須告訴cmake如何解釋gmake + makefile在做什麼。 CMake不僅會奇蹟般地導入一些隨機字符串。它會如何知道這樣做是正確的?它會如何安全地做到這一點?也許如果你提供了gmake + makefile輸出的例子,你想用這個輸出做什麼? – nega
「幹什麼」是什麼意思?只是打印到終端?用這些標誌重建你的第三方庫?將這些標誌寫入文件? – nega