我有一個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. CMake遞歸地將目錄的所有子目錄內的所有源文件添加到可執行文件?
- 4. 靜態文件(如可執行文件)添加到項目
- 5. 如何將IR保存到文件並將其構建到可執行文件?
- 6. 如何從c目標文件創建可執行文件?
- 7. 如何在Eclipse中將可執行jar文件添加到我的項目中?
- 8. maven將項目的jar庫添加到可執行文件夾
- 9. 如何將文件添加到執行生成目標的maven項目(mvn archetype:generate)?
- 10. 如何將目標文件添加到Qt中的項目中
- 11. C#項目:如何將可執行文件添加到項目中?
- 12. 添加一個rpath項目到構建樹生成的可執行文件
- 13. 如何在運行構建目標之後向.cproject文件添加預定義
- 14. 如何將文件動態添加到構建(.csproj)文件
- 15. Cmake只鏈接到可執行文件
- 16. 如何使用CMake將文件添加到Eclipse CDT項目?
- 17. 如何爲CMake生成的文件添加執行權限?
- 18. CMake添加頭到項目文件
- 19. 將文件添加到構建和發佈的bin目錄中
- 20. CMake的可執行文件的位置
- 21. 將子文件夾中的文件添加到目標
- 22. 如何將DLL文件複製到與使用CMake的可執行文件相同的文件夾中?
- 23. CMake:重用爲lib構建的目標文件到另一個lib目標中
- 24. 將.wav文件和.ttf字體文件添加到可執行jar文件中
- 25. CMake:構建項目時執行C++文件
- 26. 將Python標誌cx_freeze添加到可執行文件
- 27. 如何在OSX上構建(不安裝)cmake中的可執行文件時添加rpath?
- 28. 如何使用mt.exe將清單添加到可執行文件?
- 29. 如何將log4j.properties和log4j.jar添加到可執行文件jar ..?
- 30. 如何添加.framework文件到我的cmake文件
我試過這個,但它不起作用!我做了一個詳細的cmake,並且在鏈接過程中根本沒有提到目標文件!我使用$ {CMAKE_CURRENT_SOURCE_DIR} /libs/objectfile.o提供完整路徑 – mkmostafa
在您運行CMake的時刻它是否存在? – arrowd
我找到了解決方案。這與您僅在小改編時提出的建議類似。 :) – mkmostafa