fix(build): 修复源文件路径解析和编译选项配置问题

- 修复相对路径和绝对路径的处理逻辑
- 添加对不存在源文件的错误检查和提示
- 支持 cxxflags 和 ldflags 配置为数组格式
- 改进路径规范化和文件存在性验证
pull/1/head
韩天峰 7 months ago
parent 8cf58ebf70
commit 1a8082ce2f
  1. 2
      examples/prime/project.yml
  2. 27
      src/Php/Translator.php

@ -8,6 +8,6 @@ ldflags: |
-L/usr/lib/x86_64-linux-gnu/ -L/usr/lib/x86_64-linux-gnu/
-lssl -lssl
sources: sources:
- php-src - php-src*
- ./cpp-src - ./cpp-src
- main.php - main.php

@ -176,13 +176,18 @@ class Translator extends Preprocessor
foreach ($sources as $src) { foreach ($sources as $src) {
$src = trim($src); $src = trim($src);
if ($src[0] != '/') { if ($src[0] != '/') {
$src = $projectDir . '/' . $src; $absPath = $projectDir . '/' . $src;
} else {
$absPath = $src;
}
$realPath = realpath($absPath);
if (!$realPath) {
$this->error('Source file not exists: `' . $src . '`');
} }
$src = realpath($src); if (is_file($realPath)) {
if (is_file($src)) { $list[] = $realPath;
$list[] = $src;
} else { } else {
$tmp = $this->getFilesFromDir($src); $tmp = $this->getFilesFromDir($realPath);
$list = array_merge($list, $tmp); $list = array_merge($list, $tmp);
} }
} }
@ -190,10 +195,18 @@ class Translator extends Preprocessor
$list = $this->getFilesFromDir($projectDir); $list = $this->getFilesFromDir($projectDir);
} }
if (!empty($cfg['cxxflags'])) { if (!empty($cfg['cxxflags'])) {
$this->cxxflags = str_replace("\n", " ", $cfg['cxxflags']); if (is_array($cfg['cxxflags'])) {
$this->cxxflags = implode(' ', $cfg['cxxflags']);
} else {
$this->cxxflags = str_replace("\n", " ", $cfg['cxxflags']);
}
} }
if (!empty($cfg['ldflags'])) { if (!empty($cfg['ldflags'])) {
$this->ldflags = str_replace("\n", " ", $cfg['ldflags']); if (is_array($cfg['ldflags'])) {
$this->ldflags = implode(' ', $cfg['ldflags']);
} else {
$this->ldflags = str_replace("\n", " ", $cfg['ldflags']);
}
} }
if (!empty($cfg['name'])) { if (!empty($cfg['name'])) {
$this->setTargetName($cfg['name']); $this->setTargetName($cfg['name']);

Loading…
Cancel
Save