使用CMake我能够交叉编译并创建一个依赖于其他静态库的静态库。但是,生成的静态库不包含其他静态库的“内容”。因此,我想创建一个存档,即一个静态库,它实际上包含所有内容(所有目标文件)。
为了达到这个目的,我尝试在CMakeLists.txt中使用以下指令:
add_custom_target(combined ALL COMMAND ${CMAKE_AR} rc libcombined.a $<TARGET_FILE:target1> $<TARGET_FILE:target2> $<TARGET_FILE:target3>)
CMAKE_AR设置为我的交叉编译器(归档器?)所在的绝对路径;它的值类似于:c:/arm/arm-none-eabi-ar.exe
但是,当我尝试构建项目(make&amp;&amp; make install)时,我收到以下错误:
'..'不被识别为内部或外部命令,可操作程序或批处理文件。 make [2]:*** [src / CMakeFiles / combined]错误1
如果我打开 src / CMakeFiles / combined 所在的 build.make 文件,我有类似的内容:
src/CMakeFiles/combined:
cd absolute-path-to-the-build-folder/src && ../../relative-path-to-the-archiver-executable/arm-none-eabi-ar.exe rc libcombined.a absolute-path-to-target1-archive absolute-path-to-target2-archive absolute-path-to-target3-archive
如果我使用绝对路径手动替换archiver可执行文件的相对路径,则会正确创建新存档。如果我只是在指定的归档路径中添加引号,也会发生同样的情况。
此时,我认为它可能与Windows和/或make实用程序有关,它无法正确解释命令/路径。
因此,我有以下问题:
关于最后一点,我试图用引号转义CMAKE_AR路径,但后来我收到错误:“COMMAND可能不包含文字引号”。