我有以下代码结构
Project->
project.cxx
CMakeLists.txt
meta->
CMakeLists.txt
first->
first.cxx
CMakeLists.txt
second->
second.cxx
CMakeLists.txt
Run Code Online (Sandbox Code Playgroud)
其中first/CMakeLists.txt包含:
FILE(GLOB first_sources "*.cxx")
ADD_LIBRARY(first OBJECT ${first_sources})
Run Code Online (Sandbox Code Playgroud)
secondary/CMakeLists.txt 包含:
FILE(GLOB second_sources "*.cxx")
ADD_LIBRARY(second OBJECT ${second_sources})
Run Code Online (Sandbox Code Playgroud)
meta/CMakeLists.txt 包含:
ADD_SUBDIRECTORY(first)
ADD_SUBDIRECTORY(second)
ADD_LIBRARY(meta OBJECT $<TARGET_OBJECTS:first> $<TARGET_OBJECTS:second>)
Run Code Online (Sandbox Code Playgroud)
最后,Project/CMakeLists.txt 包含:
ADD_SUBDIRECTORY(meta)
FILE(GLOB Project_SOURCES "*.cxx")
ADD_LIBRARY(Project SHARED ${Project_SOURCES} $<TARGET_OBJECTS:meta>)
Run Code Online (Sandbox Code Playgroud)
然而,
ADD_LIBRARY(meta OBJECT $<TARGET_OBJECTS:first> $<TARGET_OBJECTS:second>)
Run Code Online (Sandbox Code Playgroud)
由于 OBJECT 库需要 c/cxx 源而不是目标文件,因此失败。
我想要实现的是一个可重定位的目标文件,它将first.o和second.o组合成一个meta.o,如下所示:
ld -r first.o second.o -o meta.o
Run Code Online (Sandbox Code Playgroud)
CMake 的替代方案是什么?
归档时间: |
|
查看次数: |
301 次 |
最近记录: |