true,代表依赖 curl 但可选 */ protected array $dep_names; public function __construct(protected LinuxBuilder $builder) { parent::__construct(); } public function getBuilder(): BuilderBase { return $this->builder; } /** * @throws RuntimeException */ public function tryBuild(bool $force_build = false): int { // 传入 true,表明直接编译 if ($force_build) { $this->build(); return BUILD_STATUS_OK; } // 看看这些库是不是存在,如果不存在,则调用编译并返回结果状态 foreach ($this->getStaticLibs() as $name) { if (!file_exists(BUILD_LIB_PATH . "/{$name}")) { $this->tryBuild(true); return BUILD_STATUS_OK; } } // 头文件同理 foreach ($this->getHeaders() as $name) { if (!file_exists(BUILD_INCLUDE_PATH . "/{$name}")) { $this->tryBuild(true); return BUILD_STATUS_OK; } } // 到这里说明所有的文件都存在,就跳过编译 return BUILD_STATUS_ALREADY; } protected function makeFakePkgconfs() { $workspace = BUILD_ROOT_PATH; if ($workspace === '/') { $workspace = ''; } foreach ($this->pkgconfs as $name => $content) { file_put_contents(BUILD_LIB_PATH . "/pkgconfig/{$name}", "prefix={$workspace}\n" . $content); } } }