4

我想将发布和调试版本的二进制文件放在源代码旁边的不同文件夹中。在 .pro 文件中:

CONFIG(debug){
    DESTDIR = ./debug
    OBJECTS_DIR = debug/.obj
    MOC_DIR = debug/.moc
    RCC_DIR = debug/.rcc
    UI_DIR = debug/.ui
}

CONFIG(release){
    DESTDIR = ./release
    OBJECTS_DIR = release/.obj
    MOC_DIR = release/.moc
    RCC_DIR = release/.rcc
    UI_DIR = release/.ui
}

对于发布版本,一切都很好。我在项目的根目录中有一个 ./release 目录。但是对于调试构建,qmake 没有创建调试目录,它的名称是release(再次!):

qmake CONFIG+=debug CONFIG+=local 
// generates release and put everything in that directory
// but I want debug directory !

更新:

替换调试和发布的顺序,创建调试目录。qmake 只看到最后一个配置...

4

2 回答 2

5

如果您确实必须进行源内构建并具有单独的输出目录,我认为您需要将每个文档的条件更改为

CONFIG(debug, debug|release){
    DESTDIR = ./debug
    OBJECTS_DIR = debug/.obj
    MOC_DIR = debug/.moc
    RCC_DIR = debug/.rcc
    UI_DIR = debug/.ui
}

CONFIG(release, debug|release){
    DESTDIR = ./release
    OBJECTS_DIR = release/.obj
    MOC_DIR = release/.moc
    RCC_DIR = release/.rcc
    UI_DIR = release/.ui
}

不过,不要问我为什么。恕我直言,QMake 是一种应不惜一切代价避免的可憎之物……

于 2013-03-19T13:16:29.870 回答
3

真正的解决方案是进行源外构建。这样,您不必每次从调试切换到发布构建并返回时都重新配置。这样做,使用以下命令:

mkdir build-dbg
cd build-dbg
qmake ../foo.pro CONFIG+=debug
cd ..
mkdir build-rel
cd build-rel
qmake ../foo.pro CONFIG+=release

另外,您不会用构建碎片污染源代码树。

于 2013-03-19T12:33:15.850 回答