我有一个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