Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt CMake-将DLL复制到运行时输出目录_Qt_Visual C++_Cmake - Fatal编程技术网

Qt CMake-将DLL复制到运行时输出目录

Qt CMake-将DLL复制到运行时输出目录,qt,visual-c++,cmake,Qt,Visual C++,Cmake,我正在尝试创建一个简单的CMake来检索Qt的dll,并将其复制到CMake创建可执行文件的目录中 使用g++或clang时效果很好,但MSVC(Visual Studio 2017)会创建一个调试或发布目录 我找不到一种方法来检索写入可执行文件的实际目录的路径(${CMAKE\u CURRENT\u BINARY\u DIR}返回Release或Debug的父目录) 我见过有人使用target属性RUNTIME\u OUTPUT\u目录,但当我使用它时,它是空的 你知道我该怎么做吗?我不想更改

我正在尝试创建一个简单的CMake来检索Qt的dll,并将其复制到CMake创建可执行文件的目录中

使用g++或clang时效果很好,但MSVC(Visual Studio 2017)会创建一个调试或发布目录

我找不到一种方法来检索写入可执行文件的实际目录的路径(
${CMAKE\u CURRENT\u BINARY\u DIR}
返回Release或Debug的父目录)

我见过有人使用target属性
RUNTIME\u OUTPUT\u目录
,但当我使用它时,它是空的

你知道我该怎么做吗?我不想更改输出目录,我只想知道它的路径(因此我不想更改
RUNTIME\u output\u directory
的值)

谢谢

在Visual Studio中,在配置步骤期间(当处理
CMakeLists.txt
文件时),未设置,因此无法直接使用生成类型因变量或属性。相反,应该使用

例如,可执行文件或库目标的输出目录可以使用
$
生成器表达式提取。它将返回完整目录,并已附加“Release/”或“Debug/”

请注意,只有在文档中明确允许使用生成器表达式时,才能使用它们。例如,它们不能用于
message()
命令

或者,您可以显式地设置变量,因此对于每个构建类型,您只需将适当的子目录附加到它。但是为了提取这个子目录,您应该再次求助于生成器表达式:
$


从技术上讲,可以为任何构建类型设置相同的输出目录。但不建议这样做,因为来自一种生成类型的文件将被来自另一种生成类型的文件覆盖。

在Visual Studio中,在配置步骤期间(当处理
CMakeLists.txt
文件时),未设置,因此无法直接使用任何生成类型因变量或属性。相反,应该使用

例如,可执行文件或库目标的输出目录可以使用
$
生成器表达式提取。它将返回完整目录,并已附加“Release/”或“Debug/”

请注意,只有在文档中明确允许使用生成器表达式时,才能使用它们。例如,它们不能用于
message()
命令

或者,您可以显式地设置变量,因此对于每个构建类型,您只需将适当的子目录附加到它。但是为了提取这个子目录,您应该再次求助于生成器表达式:
$


从技术上讲,可以为任何构建类型设置相同的输出目录。但不建议这样做,因为一种生成类型的文件将被另一种生成类型的文件覆盖