我有一個add_custom_target觸發項目的make(該項目不使用cmake!)並生成一個目標文件。我想將這個目標文件添加到我的項目cmake中的可執行目標。有沒有辦法做到這一點?如何將預構建的目標文件添加到cmake中的可執行文件
回答
可以在add_executable()
和addlibrary()
列出目標文件一起來源:
add_executable(myProgram
source.cpp
object.o
)
的唯一的事情是,你需要使用add_custom_command
生成目標文件,所以CMake的就知道從哪裏得到他們。這也將確保您的目標文件在鏈接myProgram
之前生成。
SET(OBJS
${CMAKE_CURRENT_SOURCE_DIR}/libs/obj.o
)
SET_SOURCE_FILES_PROPERTIES(
${OBJS}
PROPERTIES
EXTERNAL_OBJECT true
GENERATED true
)
這對我有效。顯然,必須設置這兩個變量EXTERNAL_OBJECT,GENERATED
代碼片段缺少將'add_executable()'調用作爲其參數之一的對象文件。它迷惑了一些讀者,像這樣:https://stackoverflow.com/questions/48209751/cmake-mingw-compiler-flag-finstrument-functions。 – Tsyvarev
我已經在我的項目做到了這一點與target_link_libraries()
:
target_link_libraries(
myProgram
${CMAKE_CURRENT_SOURCE_DIR}/libs/obj.o
)
給target_link_libraries()
任何完整路徑被假定爲被轉發到連接器的文件。
這是假設我試圖鏈接一個庫,而不是一個普通的.o文件,當我嘗試這個。 –
@DEEval是的,你需要知道CMake在這裏做什麼,這是這種方法的醜陋的一部分。我認爲這也與你的個人品味有關:外部對象文件是更多的「源文件」還是「與文件鏈接的東西」。 – Florian
- 1. 如何將庫鏈接到cmake中的可執行文件?
- 2. CMake遞歸地將目錄的所有子目錄內的所有源文件添加到可執行文件?
- 3. 如何將文件添加到執行生成目標的maven項目(mvn archetype:generate)?
- 4. 如何將目標文件添加到Qt中的項目中
- 5. C#項目:如何將可執行文件添加到項目中?
- 6. 如何使用CMake將文件添加到Eclipse CDT項目?
- 7. 如何爲CMake生成的文件添加執行權限?
- 8. 將子文件夾中的文件添加到目標
- 9. CMake的可執行文件的位置
- 10. CMake:重用爲lib構建的目標文件到另一個lib目標中
- 11. CMake:構建項目時執行C++文件
- 12. 如何使用mt.exe將清單添加到可執行文件?
- 13. 如何將log4j.properties和log4j.jar添加到可執行文件jar ..?
- 14. 如何添加.framework文件到我的cmake文件
- 15. 如何使用CMake構建的可執行文件訪問Boost DLL?
- 16. 如何將.plist文件添加到XCode中的所有目標?
- 17. 如何使用cmake將後期構建事件添加到llvm
- 18. 使用cmake將目標文件鏈接到lib.xxxx.a文件中
- 19. 將源添加到cmake中的列表變量與直接添加可執行文件中
- 20. Linux中可執行文件中的目標文件
- 21. 將依賴項目的屬性文件添加到Maven中的構建目標文件夾
- 22. 如何在構建時將每個目標UIAppFonts添加到共享Info.plist文件
- 23. 如何將Assembly *值添加回我的可執行文件?
- 24. 生成與CMake的一個文件,並將其添加爲一個可執行
- 25. 在cmake/Visual Studio項目中調試/運行可執行文件
- 26. 自動將可執行文件追加到腳本文件中
- 27. 將元數據添加到gcc生成的可執行文件
- 28. 將sqlite數據庫添加到可執行的JAR文件
- 29. 如何將jar文件添加到構建路徑中
- 30. 使用CMake將Qt DLL複製到Windows上的可執行文件目錄
我試過這個,但它不起作用!我做了一個詳細的cmake,並且在鏈接過程中根本沒有提到目標文件!我使用$ {CMAKE_CURRENT_SOURCE_DIR} /libs/objectfile.o提供完整路徑 – mkmostafa
在您運行CMake的時刻它是否存在? – arrowd
我找到了解決方案。這與您僅在小改編時提出的建議類似。 :) – mkmostafa