feat(build): 支持项目配置文件中定义源文件路径

- 添加 sources 字段支持在 project.yml 中指定源文件
- 实现相对路径转换为绝对路径的功能
- 支持单个文件和目录的混合配置
- 优化文件列表生成逻辑
- 修复源文件路径解析问题
- 更新项目构建流程以使用新配置格式
pull/1/head
韩天峰 7 months ago
parent 09af173013
commit 8cf58ebf70
  1. 0
      examples/prime/cpp-src/vector.cc
  2. 0
      examples/prime/php-src/vector.stub.php
  3. 5
      examples/prime/project.yml
  4. 21
      src/Php/Translator.php

@ -7,4 +7,7 @@ cxxflags: |
ldflags: |
-L/usr/lib/x86_64-linux-gnu/
-lssl
sources:
- php-src
- ./cpp-src
- main.php

@ -168,17 +168,26 @@ class Translator extends Preprocessor
protected function parseProjectYaml(string $path): array
{
$cfg = Yaml::parseFile($path);
$projectDir = dirname($path);
if (!empty($cfg['sources'])) {
$dirs = $cfg['sources'];
$sources = $cfg['sources'];
$list = [];
foreach ($dirs as $dir) {
$tmp = $this->getFilesFromDir($dir);
$list = array_merge($list, $tmp);
foreach ($sources as $src) {
$src = trim($src);
if ($src[0] != '/') {
$src = $projectDir . '/' . $src;
}
$src = realpath($src);
if (is_file($src)) {
$list[] = $src;
} else {
$tmp = $this->getFilesFromDir($src);
$list = array_merge($list, $tmp);
}
}
} else {
$dir = dirname($path);
$list = $this->getFilesFromDir($dir);
$list = $this->getFilesFromDir($projectDir);
}
if (!empty($cfg['cxxflags'])) {
$this->cxxflags = str_replace("\n", " ", $cfg['cxxflags']);

Loading…
Cancel
Save