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/
-lssl
sources:
- php-src
- php-src*
- ./cpp-src
- main.php

@ -176,13 +176,18 @@ class Translator extends Preprocessor
foreach ($sources as $src) {
$src = trim($src);
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($src)) {
$list[] = $src;
if (is_file($realPath)) {
$list[] = $realPath;
} else {
$tmp = $this->getFilesFromDir($src);
$tmp = $this->getFilesFromDir($realPath);
$list = array_merge($list, $tmp);
}
}
@ -190,10 +195,18 @@ class Translator extends Preprocessor
$list = $this->getFilesFromDir($projectDir);
}
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'])) {
$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'])) {
$this->setTargetName($cfg['name']);

Loading…
Cancel
Save