我有add_custom_target
触发项目的make(该项目不使用cmake!)并生成目标文件。我想将此目标文件添加到项目的cmake中的可执行目标中。有没有办法做到这一点?
答案 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 ..)
个目标。
并且 - 另请参阅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
之前构建目标文件。