如何在cmake中将预构建的对象文件添加到可执行文件中

时间:2016-07-27 09:42:16

标签: cmake

我有add_custom_target触发项目的make(该项目不使用cmake!)并生成目标文件。我想将此目标文件添加到项目的cmake中的可执行目标中。有没有办法做到这一点?

3 个答案:

答案 0 :(得分:10)

Option Explicit

Dim ex_Array()          As Variant
Dim i                   As Integer
Dim ans_str             As String

Sub concen()

ReDim ex_Array(0 To 100)    
ex_Array(0) = "1"
ex_Array(1) = "2"
ex_Array(3) = "3"

For i = 0 To UBound(ex_Array)
    ans_str = ans_str & ex_Array(i)    
Next i    
MsgBox ans_str

End Sub

这对我有用。显然必须设置这两个属性, EXTERNAL_OBJECT GENERATED

答案 1 :(得分:9)

我在target_link_libraries()的项目中完成了这项工作:

target_link_libraries(
    myProgram 
    ${CMAKE_CURRENT_SOURCE_DIR}/libs/obj.o
)

假定给target_link_libraries()的任何完整路径都要转发给链接器。

对于CMake版本> = 3.9,您可以使用add_library(... OBJECT IMPORTED ..)个目标。

请参阅Cmake: Use imported object

并且 - 另请参阅the answer from @arrowd - 有未记录的方式将它们直接添加到目标的源文件列表(actually meant to support object file outputs for add_custom_command() build steps,就像你的情况一样)。

答案 2 :(得分:4)

您可以在add_executable()addlibrary()

中列出来源文件
add_executable(myProgram
   source.cpp
   object.o
)

唯一需要使用add_custom_command来生成目标文件,因此CMake会知道从哪里获取它们。这还可以确保在链接myProgram之前构建目标文件。