代码之家  ›  专栏  ›  技术社区  ›  rookie

cmake转换为对象文件

  •  0
  • rookie  · 技术社区  · 8 年前

    我有一个ARM目标的Keil项目,我将其转换为命令行构建系统的Makefile。我也在考虑使用cmake,但我找不到正确的命令/cmakey方法来完成任务。我的Makefile转换来自不同目录的大量源文件,并从中创建对象文件。然后链接器获取所有这些对象文件,生成一个可执行文件,其中包含一组标志和内存映射文件。所以我不能只使用 add_executable 命令在cmake中实现这一点的最佳方法是什么?

    编辑:

    下面是Makefile试图做的事情(基本上是复制Keil构建项目的方式)

    OBJECT_FILES=out/abc.o out/def.o out/xyz.o
    
    all: binary.hex
    
    binary.hex: binary.axf
               $(ELFTOHEX) $(FLAGS) binary.hex
    
    out/binary.axf: $(OBJECT_FILES)
                   ARMLINK $(MANY_FLAGS) $^ -o $@
    
    out/abc.o: ../../../src/modules/abc.c
           ARMCC -o $@ $(FLAGS) $^ 
    out/def.o: ../../../src/utilities/def.c
           ARMCC -o $@ $(FLAGS) $^ 
    out/xyz.o: src/xyz.c
           ARMCC -o $@ $(FLAGS) $^ 
    
    1 回复  |  直到 8 年前
        1
  •  1
  •   arrowd    8 年前

    您可以使用 add_library with OBJECT signature :

    add_library(yourlib OBJECT sources)
    

    然后将它们链接到可执行文件中,例如:

    add_executable(yourexe $<TARGET_OBJECTS:yourlib>)