cmake - CMake分别为每个对象执行归档程序
问题描述
我想在 cmake 中创建一个带有存档器(来自 arduino,esp8266)的库。
add_library(arduino_core STATIC ${CORE_ASM_ITEMS} ${CORE_C_ITEMS} ${CORE_CXX_ITEMS})
我设置的这些选项,特别是 CMAKE_AR
set(CMAKE_C_COMPILER "${TOOLCHAIN_BIN}/${TARGET_TRIPLET}-gcc${SYSTEM_EXTENSION}")
set(CMAKE_CXX_COMPILER "${TOOLCHAIN_BIN}/${TARGET_TRIPLET}-g++${SYSTEM_EXTENSION}")
set(CMAKE_ASM_COMPILER "${TOOLCHAIN_BIN}/${TARGET_TRIPLET}-gcc${SYSTEM_EXTENSION}")
set(CMAKE_AR "${TOOLCHAIN_BIN}/${TARGET_TRIPLET}-ar${SYSTEM_EXTENSION}")
SET(CMAKE_CXX_ARCHIVE_CREATE "<CMAKE_AR> cru <TARGET> <LINK_FLAGS> <OBJECTS>")
SET(CMAKE_C_ARCHIVE_CREATE "<CMAKE_AR> cru <TARGET> <LINK_FLAGS> <OBJECTS>")
如果我用 make 构建这个库,它将执行:
/Users/XXX/Library/Arduino15/packages/esp8266/tools/xtensa-lx106-elf-gcc/2.5.0-3-20ed2b9/bin/xtensa-lx106-elf-ar cru libarduino_core.a CMakeFiles/arduino_core.dir/Users/XXX/Library/Arduino15/packages/esp8266/hardware/esp8266/2.5.0/cores/esp8266/cont.S.o CMakeFiles/arduino_core.dir/Users/XXX/Library/Arduino15/packages/esp8266/hardware/esp8266/2.5.0/cores/esp8266/StackThunk.c.o
最后还有更多的对象(大约 60 个)。但我认为归档器不想要这种语法。如果我最后链接这个构建的库,它会因为未定义的引用而失败。
但是如果我手动构建库,给每个对象一个自己的归档器执行,如下所示,最后链接库是成功的。
/Users/XXX/Library/Arduino15/packages/esp8266/tools/xtensa-lx106-elf-gcc/2.5.0-3-20ed2b9/bin/xtensa-lx106-elf-ar cru libarduino_core.a CMakeFiles/arduino_core.dir/Users/XXX/Library/Arduino15/packages/esp8266/hardware/esp8266/2.5.0/cores/esp8266/cont.S.o
/Users/XXX/Library/Arduino15/packages/esp8266/tools/xtensa-lx106-elf-gcc/2.5.0-3-20ed2b9/bin/xtensa-lx106-elf-ar cru libarduino_core.a CMakeFiles/arduino_core.dir/Users/XXX/Library/Arduino15/packages/esp8266/hardware/esp8266/2.5.0/cores/esp8266/StackThunk.c.o
...
所以我的问题是:是否有任何 CMake 选项可以限制例如给定对象的数量?或者类似的东西?
解决方案
推荐阅读
- java - java do while要求输入两次
- html - 在复选框元素上过滤模糊?
- c++ - 如何获得函数的真值表 (( c + ~d ) * b ) * ~( d + a * e )
- java - 将枚举值添加到数据库
- android - 有没有使用颤振检测修改后的应用程序的解决方案?
- jquery - 如何使用 jQuery 在 `focus in` 上正确捕获 HTML 表格单元格 (td) 值
- java - 重置可变类字段
- php - Laravel 7.x - 如何比较规则验证中的两个字段?
- java - 如何向我的 Java JFrame 添加一些声音?
- javascript - 我可以将一个数组动态插入到我从正则表达式匹配生成的 mysql 中吗?