【发布时间】:2026-02-11 11:20:20
【问题描述】:
我必须在我的目标路径中创建一个文件夹并复制头文件。
所以我在 .pro 文件中使用了以下命令
DESTDIR_WIN_CELLTWEAK = $${CORE_API_PATH}/Include/spgc/
DESTDIR_WIN_CELLTWEAK ~= s,/,\\,g
QMAKE_POST_LINK += $$quote(mkdir $${DESTDIR_WIN_CELLTWEAK} $$escape_expand(\n\t))
for(FILE,EXPORTED_HEADERS_WIN){
QMAKE_POST_LINK +=$$quote(cmd /c copy /y $${FILE} $${DESTDIR_WIN_CELLTWEAK}&$$escape_expand(\n\t))
}
它是第一次创建文件夹。但是在构建第二个时,我必须避免创建 spgc 文件夹(因为已经存在)。
如果 spgc 文件夹已经存在,qt build 也会抛出错误。
我试过了
!exists($${DESTDIR_WIN_CELLTWEAK})
{
$$quote($${DESTDIR_WIN_CELLTWEAK})
QMAKE_POST_LINK += $$quote(mkdir $${DESTDIR_WIN_CELLTWEAK} $$escape_expand(\n\t))
}
但即使文件夹存在,!exists() 函数也会被调用并创建文件夹。
【问题讨论】:
-
如果你写
QMAKE_POST_LINK += $$quote(if not exists $${DESTDIR_WIN_CELLTWEAK} mkdir $${DESTDIR_WIN_CELLTWEAK})会怎样 -
好的,我会检查并更新。谢谢 vahancho
-
@vahancho : 它没有进入函数内部,甚至文件夹也不存在。
-
我不确定
qmake的语法,但想法是使用以下批处理命令if not exists my_dir mkdir my_dir。这样my_dir只有在它不存在时才会被创建。 -
任何它如何帮助我很多 vahancho 。如果可以的话,我会找到一些替代方法并在这里发布。谢谢