首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

build子目录模板输出到QMake目录,而不是主目录

在Qt项目中,qmake是一个用于生成Makefile的工具,它根据项目文件(通常是.pro文件)中的配置来构建项目。当你提到“build子目录模板输出到QMake目录,而不是主目录”,这通常涉及到如何配置qmake以指定构建输出的目录。

基础概念

  • QMake: Qt的构建工具,用于生成Makefile或其他构建系统所需的文件。
  • 构建目录: 项目构建过程中生成的临时文件和最终可执行文件的存放位置。
  • 主目录: 通常指的是包含项目源代码的根目录。

相关优势

将构建输出放在单独的目录中有几个好处:

  1. 保持源代码目录整洁: 避免编译生成的文件污染源代码目录。
  2. 便于管理: 可以轻松地删除整个构建目录来清理项目。
  3. 多构建配置: 可以为不同的构建配置(如Debug和Release)创建不同的构建目录。

类型与应用场景

  • Debug构建: 用于开发和调试,通常包含更多的调试信息。
  • Release构建: 用于最终发布,优化了性能和大小。

配置方法

.pro文件中,你可以使用DESTDIR变量来指定构建输出的目录。例如:

代码语言:txt
复制
# 设置构建目录为项目根目录下的build子目录
DESTDIR = $$PWD/build

如果你想要为不同的构建配置指定不同的输出目录,可以使用条件语句:

代码语言:txt
复制
# Debug构建输出到build/debug目录
Debug:DESTDIR = $$PWD/build/debug

# Release构建输出到build/release目录
Release:DESTDIR = $$PWD/build/release

遇到的问题及解决方法

如果你发现构建输出没有按照预期进入指定的子目录,可能是以下原因:

  1. 路径问题: 确保DESTDIR中指定的路径是正确的,并且存在。
  2. 权限问题: 确保你有权限写入指定的目录。
  3. qmake版本: 使用的qmake版本可能不支持某些语法或特性。

解决方法:

  • 检查并修正DESTDIR中的路径。
  • 确保你有足够的权限在目标目录中进行写操作。
  • 如果使用的是较旧的qmake版本,尝试更新到最新版本。

示例代码

假设你的项目结构如下:

代码语言:txt
复制
myproject/
├── main.cpp
└── myproject.pro

myproject.pro文件中,你可以这样配置:

代码语言:txt
复制
QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = myapp
TEMPLATE = app

SOURCES += main.cpp

# 设置构建目录
DESTDIR = $$PWD/build

这样,当你运行qmakemake(或nmakejom等,取决于你的平台)时,生成的可执行文件将会放在myproject/build目录下。

通过这种方式,你可以有效地管理你的构建过程,并保持源代码目录的整洁。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Hello Qt——QMake用户指南

Studio平台的解决方案文件 当使用subdirs模板时,qmake会生成一个MakeFile检查每个子目录,处理查找到的任何工程文件。...此外,所选的主动构建配置存储在.pbxuser文件中,.pbxuser文件是由XCode在第一次加载中生成的,而不是qamke创建的。...通过设置qmake工程模板为vcapp或vclib可以实现,可以使用命令行进行: qmake -tp vc 在子目录递归生成.vcproj文件和在主目录生成文件如下: qmake -tp vc -r 每次更新工程文件时...build_all:如果指定了debug_and_release,工程默认会以debug和release两种模式构建 ordered:当使用subdirs模板时,本选项指定列出的子目录会以给出的顺序被处理...使用此变量指定的每个子目录必须包含其自己的工程文件。 建议每个子目录中的工程文件与子目录本身具有相同的基名,因为这样可以省略文件名。

6.4K20

qmake手册(Qt5.9.3)

注意:必须在调用make工具时设置变量,而不是在.pro文件中。...这也可以使用命令行选项来设置,例如: qmake -tp vc 通过输入以下命令,可以递归地在子目录中生成.vcproj文件,在主目录中生成.sln文件: qmake -tp vc -r 每次更新项目文件时...这允许使用自定义扩展而不是标准的.framework目录名称扩展来创建框架。...支持的修饰符是: 修改 影响 .subdir 使用指定的子目录而不是SUBDIRS值。 .file 明确指定子项目专业文件。不能与.subdir修饰符一起使用。...在.pro文件处理完成后,这将覆盖模板类型。对于使用模板类型来确定项目构建方式的.pro文件,有必要在命令行上声明TEMPLATE而不是使用-t选项。

5.8K20
  • qmake:变量手册

    这些选项仅定义 Windows 上的特定功能: flat:当使用 vcapp 模板时,这会将所有源文件放入源组并将头文件放入头组,而不管它们驻留在哪个目录中。...与 TRANSLATIONS 相比,EXTRA_TRANSLATIONS 中的翻译文件将仅由 lrelease 处理,而不是由 lupdate 处理。...这允许使用自定义扩展名而不是标准的 .framework 目录名称扩展名创建框架。...187、SUBDIRS 此变量与 subdirs 模板一起使用时,指定包含需要构建的项目部分的所有子目录或项目文件的名称。使用此变量指定的每个子目录都必须包含其自己的项目文件。...支持的修饰符是: .subdir:使用指定的子目录而不是 SUBDIRS 值。 .file:明确指定子项目 pro 文件。 不能与 .subdir 修饰符一起使用。

    3.9K20

    翻译qmake文档(三) Creating Project Files

    举例,在HEADERS和SOURCES里的变量列表用于告诉qmake在相同目录里的头文件和源文件做为项目文件。      ...每一个子目录必须包含它自己的项目文件。...vcapp Visual Studio项目文件 生成一个应用程序 vclib Visual Studio项目文件生成一个库 vcsubdirs Visual Studio解决方案文件要在子目录生成项目...当使用subdirs模板时,qmake生成一个makefile用来检查每一个子目录,处理在子目录里找到的工程文件,并执行平台的make 工具生成新的Makefile。...SUBDIRS变量被用于包含所有要被处理的子目录的列表。 常规配置 CONFIG变量指定项目应该配置的选项和功能。      可以在release模式或debug模式或两种模式一起构建项目。

    95360

    qt中qmake的详解

    3.各种模板生成不同类型的工程,而每个模板可以用的qmake变量是不一样的: app模板:编译一个可执行程序 选项        描述 windows     程序是Window平台的界面程序...INCLUDEPATH = c:/msdev/include d:/stl/include 不过我的习惯是下面这样的,比较清晰还有,最好windows的路径不要有空格,中文也不要有,斜杠也推荐用/ 而不是...·help 列出qmake帮助信息 ·o file 直接输出到文件file。如果这个选项没有指定, qmake将会尝试使用合适的文件名作为输出,这依赖于当前的运行模式。...·d 列出qmake的调试信息 由于工程需要在每个目标平台上进行不同的编译,并有很多子目录, 你可以在运行qmake的时候使用下面的选项来设置相应的指定平台的变量。...·cache file qmake将使用指定的缓冲文件file而忽略其他找到的.qmake.cache 文件。

    2.7K40

    qmake介绍

    文章目录 简单介绍下qmake 简要介绍 关于pro文件 构建一个项目 使用第三方库 预编译头文件 让我们开始试试吧 从一个简单的例子开始 允许程序可以Debug 添加特定平台的源文件 设置当文件不存在的时候就停止...指定的规则,每一个子目录都包含它自己的pro文件 vcapp 构建VisualStudio项目文件 vclib 构建lib vcsubdirs 构建VisualStudio的subdirs 在写app...pro文件,并且运行平台的 make工具在新创建的Makefile上,SUBDIRS变量用来包含一系列的子目录 常规配置属性 变量 CONFIG 指定了项目所需要的配置的选项和特征 项目可以在release...所生成的Makefile将包含一个语句用来生成所有的版本,如下: make all 在CONFIG选项中添加build_all选项来指定在构建的时候生成两个版本的程序 注意:在CONFIG下的每一个选项都需要包括在花括号中...中删掉 x11 本项目是一个 C++ X11 的应用程序后者库,这个变量在使用Qt的时候不是必须的 应用程序和库模板 可以提供给你更多特别的选项,目的是使应用程序的构建更好,这些选项在下面的章节中将展示

    1K10

    玩转Liunx系统,看这篇文章就够了(二)

    userdel –r lisi:删除用户lisi,并且把lisi的主目录也删除(级联删除,经常使用)。...注意:从高权限用户切换到低权限用户时,不需要输密码;否则,需要输密码。 重点:exit命令可以回到原来的用户,并且切换回root不需要密码。...查看指定目录下所有的子目录或者文件列表: ls [指定目录] 查看当前目录下的子目录或者文件列表: ls 以指定格式显示子目录以及文件列表 ls 指定目录:使用默认的展示形式(相当于Windos中的平铺形式...:可以在控制台输出Hello world 把前一个查看命令的结果输出到指定的文件中(如果文件不存在,系统会帮我们自动创建一个。...并且创建文件的位置就是输入命令的这个目录) : 查看命令 > 文件名 ls > ret.txt 注意: 输入到这个文件中的并不是一个目录,而是这个目录下对应的文件或者子目录的名称。

    74900

    QT5.2 Assistant-设置应用程序图标

    在您的项目目录中将所有一系列的图标保存在一个文件中。 如果您正使用qmake生成makefile文件,您只需要将一个单一的行添加到您的.pro工程文件。...虽然用于定位图标的路径依赖于在桌面上的使用和它的配置,下面所有这些目录结构应该遵循相同的模式:子目录都按照主题,图标大小和应用程序类型进行组织。...当前登录到他们的KDE桌面的用户可以通过使用kde-config发现这些位置,例如,通过在终端窗口中键入执行下列操作: kde-config --path icon 通常情况下,被输出到stdout的以冒号分隔的路径列表中包含了用户特定的图标路径和全系统的路径...如果您正在专门为KDE开发,你不妨利用KDE build system的优势来配置您的应用程序。这可以确保你的图标被安装在KDE的适当位置。...如果您正在 专门为 GNOME开发 , 你 可能希望使用 一组标准 的GNU Build Tools , 在GTK+/Gnome Application Development book 的 相关章节

    2.6K20

    CmakeList的编写和参数详解

    build —– 编译目录,存放编译生成的中间文件 cmake 要求工程主目录和所有存放源代码子目录下都要编写CMakeLists.txt 文件,注意大小写(cm 大写,list中...ADD_SUBDIRECTORY(utility) 添加要编译的子目录 为工程主目录下的存放源代码的子目录使用该命令,各子目录出现的顺序随意。...如上便是工程server_project 主目录src 下的CMakeLists.txt 文件,下一篇我们解释子目录utiltiy中的CMakeLists.txt 文件。...如不指定, 生成的执行文件在当前编译目录下的各子目录下的build目录下,好拗口!简单一点: 如指定在: ./src/lib 下 不指定在: ..../src/build/utilty/build 目录下,不受该命令额影响 子目录server 下的CMakeLists.txt 文件: --------------------------

    2.2K50

    CMake项目的编译流程

    概述 CMake项目的主要目录存在一个 CMakeLists.txt 文件 我们有两种当时设置编译规则 包含源文件的子文件夹包含 CMakeLists.txt 文件,主目录的 CMakeLists.txt...通过 add_subdirectory 添加子目录即可 包含源文件的子文件夹未包含 CMakeLists.txt 文件,子目录编译规则体现在主目录的 CMakeLists.txt 文件 2....内部构建 (in-source build) : 不推荐使用 内部构建会产生很多中间文件,这些文件并不是我们最终想要的,和工程源代码文件放在一起会显得杂乱无章。...外部构建 (out-of-source build) : 推荐使用 将编译的目录和源代码目录区分开来,放在不同目录中 外部编译示例 # 1....在当前目录下,创建 build 文件夹 mkdir build # 2. 进入build目录 cd build # 3.

    1.8K20

    SDN第二章 Ubuntu系统常用操作命令

    (和help作用相同) 3、ls:查看文件信息 a、ls -a:显示指定目录下的所有子目录和文件(包括隐藏文件); b、ls -l:以列表的方式显示指定目录下的所有子目录和文件的详细信息; c、ls -...比如ls只输个l,然后按tab键。...29、useradd:添加用户账号 Linux每个用户都要有一个主目录,主目录就是第一次登陆系统,用户的默认当前目录(/home/用户);每一个用户必须有一个主目录,所以用useradd创建用户的时候,...一定给用户指定一个主目录;用户的主目录一般要放到根目录的home目录下,用户的主目录和用户名是相同的;如果创建用户的时候,不指定组名,那么系统会自动创建一个和用户名一样的组名。...dist-upgrade升级系统 apt-cache depends package了解使用该包依赖那些包 apt-cache rdepends package查看该包被哪些包依赖 sudo apt-get build-dep

    33010

    【QT】:QT(介绍、下载安装、认识 QT Creator)

    扩展插件、QtCreator 自身插件 其他项目 可以创建单元测试项目、Qt4 设计师自定义控件、子目录项目等 Non-Qt-Project 非 Qt 项目。...qmake:qmake 是一个构建工具(build tool),用于自动生成 makefile 文件。qmake 支持跨平台构建。qmake 编辑的是一个后缀名为 .pro 的文件。...Qbs:Qbs(Qt Build Suite: Qt构建套件)同 qmake、CMake 一样都是构建工具。Qbs 号称是新一代的构建工具,比gmake 编译速度更快。...// ③ 对于任何一个使用 Qt 的图形用户界面应用程序,都正好存在一个 QApplication 对象,而不论这个应用程序在同一时间内是不是有 0、1、2 或更多个窗口。...subdirs:这是一个特殊的模板,它可以创建一个能够进入特定目录的 makefile 并且为它调用make 的makefile.

    1.7K11

    【linux命令讲解大全】011.使用find命令在指定目录下查找文件及应用技巧和选项详情

    如果使用该命令时,不设置任何参数,则 find 命令将在当前目录下查找子目录与文件,并且将查找到的子目录和文件全部进行显示。...; -print:假设 find 指令的回传值为 True,就将文件或目录名称列出到标准输出。...-empty 其它实例 find ~ -name '*jpg' # 主目录中找到所有的 jpg 文件。 -name 参数允许你将结果限制为与给定模式匹配的文件。...(为什么你要命名一个 bucketofjpg 而不是 pictures 的目录就超出了本文的范围。)我们使用 -type 参数修改我们的命令来查找文件。...也许你想在你的主目录中找到对所有人可读的文件,以确保你不会过度分享。

    1.8K10

    QT软件开发源码工程前端QMake管理

    QT软件上位机进行算法效果的调参和演示 使用C++和opencv手撕实现光度立体算法功能 我们可以将算法部分直接写入到我们QT上位机内,也就是不论软件还是算法都写到一起揉成一团,但在实际项目开发中并不是这样的...至于工程管理,前端我们使用QT自带的qmake,其实我们还可以直接使用VS工程管理,或者使用CMake管理,但使用qmake对于所有级别的学者都可以快速上手,如果使用cmake肯定会涉及一些高阶内容,但我们本教程不打算对...我们也不适用VS工程直接管理,因为VS的sln文件是个二进制文件,我们无法对其进行版本管理,而qmake是文本文件,是可以方便的进行版本管理的。...3、前端QMake内容解析 QMake是QT自带的工程管理语法,其文件为pro工程文件,我们看烛照的pro工程文件如下: #添加依赖的QT,主要包含core gui widgets QT +.../bin/PhotometricStereo } #配置生成路径,将我们的结果输出产物输出到bin文件夹内,方便管理 CONFIG(debug, debug|release){ DESTDIR

    12910

    linux两台服务器之间传输文件和文件夹

    -k:请求rcp获得在指定区域内的远程主机的Kerberos 许可,而不是获得由krb_relmofhost⑶确定的远程主机区域内的远程主机的Kerberos许可。...如果在文件名中指定的路径不是完整的路径名,那么这个路径被解释为相对远程机上同名用户的主目录。如果没有给出远程用户名,就使用当前用户名。...被复制到远程子目录 test3下,名称仍为 test1 。...另外,如果主目录下没有 remote_dir,则 remote_dir 将需要一个相对路径(自主目录开始)或绝对路径(自 / 开始)。...使用实例5: 要将名为 work 的子目录完整地复制到 webserver1远程计算机中的主目录下名为 products 的目录,请键入以下内容: rcp –r work webserver1:/home

    9.2K71

    QT的cmake项目工程配置

    QT的项目工程默认使用的是qmake,这本来也没什么问题。但是由于要用到vcpkg这个工具来管理第三方库,好像这个 vcpkg工具只能在cmake的项目中才能使用。...如果你的源码使用了三方库或者生成了动态链接库,那么需要手动将需要的dll文件复制到目录下,实际运行试试,是不是可以正常运行。...CmakeLists.txt 配置模板如下: 这里面每一项的含义,好像都能看懂。总之比makefile好看多了,再也不愿回到makefile了。 需要多总结多记,看的多用的多了就熟了吧。...include) 添加头文件路径link_directories({PROJECT_SOURCE_DIR}/lib) 添加链接库的路径add_subdirectory(module)添加 module 子目录.../build) set(LIB_DIR ${BUILD_DIR}/lib/Release) set(LIB_FIX) if (CMAKE_BUILD_TYPE MATCHES "Debug")

    3.5K21
    领券