在代码块中排除 Cmake 依赖

Exclude Cmake dependecies in biicode block

我想将我的库项目移植到 biicode,但是我的示例使用的二进制文件对于 biicode 块来说太大了(有 12MB 的限制),所以我将示例文件夹添加到 ignore.bii 文件. 问题是它现在寻找 example/CMakeLists.txt 因为我使用的是包裹在

中的旧 CMakeLists.txt
IF(BIICODE)
   INIT_BIICODE_BLOCK()
   ADD_BIICODE_TARGETS()
ELSE()
#MY OLD CMAKELIST HERE
ENDIF()

它实际上构建良好,但 bii deps 仍然试图解决依赖关系

我该怎么办?我真的不想删除或更改太多东西来支持 biicode,因为该项目已经在 github.

编辑: 这是项目的 link:https://github.com/Lectem/libmpo 我在 biicode.conf 中按照

尝试了一些东西
[dependencies]
    CMakeLists.txt - example/CMakeLists.txt
    include/libmpo/mpo.h - jpeglib.h

但我明白了:

WARN: Lectem/libmpo/biicode.conf, [dependencies] CMakeLists.txt - example/CMakeLists.txt
        There are no files matching pattern example/CMakeLists.txt
WARN: Lectem/libmpo/biicode.conf, [dependencies] include/libmpo/mpo.h - jpeglib.h
        There are no files matching pattern jpeglib.h
Lectem/libmpo depends on:
       Lectem/libmpo (self)
          include/libmpo/cmpo.h
                src/cmpo.c (E)
          include/libmpo/mpo.h
                src/cmpo.c (E)
                src/dmpo.c (E)
                src/mpo.c (E)
          src/cmpo.c
                include/libmpo/cmpo.h (I)
          src/dmpo.c
                include/libmpo/mpo.h (I)
          src/mpo.c
                include/libmpo/mpo.h (I)
       jpeg/jpeg: 0
          jpeglib.h
                include/libmpo/mpo.h (E)
       system:
          assert.h
                src/cmpo.c
                src/mpo.c
          stdint.h
                include/libmpo/mpo.h
          stdio.h
                include/libmpo/mpo.h
          stdlib.h
                include/libmpo/mpo.h
       unresolved:
          example/CMakeLists.txt
                CMakeLists.txt
          jpeglib.h
                include/libmpo/mpo.h

我也在尝试删除 jpeglib.h 依赖项,因为我放置了以下宏:

#ifdef BII
#include <jpeg/jpeg/jpeglib.h>
#else
#include <jpeglib.h>
#endif

没有必要修改您的源代码,如果您想进行这样的检查,可以使用#ifdef BIICODE。

所以保持代码不变,并使用 biicode.conf 中的 [includes] 部分:

[requirements]
     jpeg/jpeg: 1

[paths]
    include

[includes]
     jpeglib.h: jpeg/jpeg

现在确实有 12 MB 的限制,但您可以使用当前大小添加一个 ignore.bii 文件来解决它:

example/*.mpo
*.pdf

然后将 ADD_BIICODE_TARGETS 宏添加到您的 cmake 中应该就足够了,它将管理所有内容,因此只需在 CMakeLists.txt

的开头添加
IF(BIICODE)
  ADD_BIICODE_TARGETS()
  return()
ENDIF()

的确是biicode中的jpeg lib版本好像有问题,但是在biicode版本jpeg/jpeg:1中修复并升级为jpeg9,也就是[=27=中的那个].

将此添加到您的存储库中,您应该能够 "bii build" 和 运行 bin 文件夹中生成的示例。我已经使用 MinGW 4.8 对其进行了测试并且有效。