Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.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
使用CMake编译QTCreator和VisualStudio代码_Qt_Visual Studio Code_Cmake_Qt5_Qt Creator - Fatal编程技术网

使用CMake编译QTCreator和VisualStudio代码

使用CMake编译QTCreator和VisualStudio代码,qt,visual-studio-code,cmake,qt5,qt-creator,Qt,Visual Studio Code,Cmake,Qt5,Qt Creator,我对程序的编写有一个问题。我不知道为什么同样的CMakeLists.txt在QTcreator中编译,而不是在Visual Studio中编译。我使用的编译器与MinGW for Windows完全相同。我已经阅读了文档,除了使用翻译文件未命名的\u fr\u fr.ts,它编译得很好 请参阅CMakeLists.txt cmake_minimum_required(VERSION 3.5) #--------------------------------------------------

我对程序的编写有一个问题。我不知道为什么同样的CMakeLists.txt在QTcreator中编译,而不是在Visual Studio中编译。我使用的编译器与MinGW for Windows完全相同。我已经阅读了文档,除了使用翻译文件未命名的\u fr\u fr.ts,它编译得很好

请参阅CMakeLists.txt

cmake_minimum_required(VERSION 3.5)

#---------------------------------------------------------------------    
# I ADD THIS ONE TO COMPILE IN VSCODE AS ASKED IN THE DOCUMENTATION
#---------------------------------------------------------------------
set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} "C:\\Qt\\5.15.0\\mingw81_64")
#---------------------------------------------------------------------

project(untitled LANGUAGES CXX)

set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

find_package(Qt5 COMPONENTS Widgets LinguistTools REQUIRED)

set(TS_FILES untitled_fr_FR.ts)

  add_executable(untitled
    main.cpp
    mainwindow.cpp
    mainwindow.h
    mainwindow.ui
    ${TS_FILES}
  )

target_link_libraries(untitled PRIVATE Qt5::Widgets)

qt5_create_translation(QM_FILES ${CMAKE_SOURCE_DIR} ${TS_FILES})
此代码在QTCreator中运行良好,但在VSCode中出现以下错误:

[main] Building folder: untitled 
[build] Starting build
[proc] Executing command: "C:\Program Files\CMake\bin\cmake.EXE" --build c:/Users/remi/Desktop/ok/untitled/build --config Debug --target all -- -j 6
[build] [ 16%] Automatic MOC and UIC for target untitled
[build] [ 16%] Built target untitled_autogen
[build] mingw32-make.exe[2]: *** No rule to make target '../', needed by '../untitled_fr_FR.ts'.  Stop.
[build] mingw32-make.exe[1]: *** [CMakeFiles\Makefile2:95: CMakeFiles/untitled.dir/all] Error 2
[build] mingw32-make.exe: *** [Makefile:103: all] Error 2
[build] Build finished with exit code 2

***** No rule to make target '../', needed by '../untitled_fr_FR.ts'.  Stop.**
我如何解决这个问题?如何确定QTCreator在CMake文件/env中更改了什么以编译.ts文件


非常感谢您的帮助,希望我说得清楚,不要打扰您。

包含翻译的最佳方法是不要使用此方法。编译程序的CMakeLists.txt是:

cmake_minimum_required(VERSION 3.5)

#---------------------------------------------------------------------    
# I ADD THIS ONE TO COMPILE IN VSCODE AS ASKED IN THE DOCUMENTATION
#---------------------------------------------------------------------
set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} "C:\\Qt\\5.15.0\\mingw81_64")
#---------------------------------------------------------------------

project(untitled LANGUAGES CXX)

set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

find_package(Qt5 COMPONENTS Widgets REQUIRED)

  add_executable(untitled
    main.cpp
    mainwindow.cpp
    mainwindow.h
    mainwindow.ui
  )

target_link_libraries(untitled PRIVATE Qt5::Widgets)
如果您想编译它(在Qt环境之外),您需要使用这个:

cmake_minimum_required(VERSION 3.5)

#---------------------------------------------------------------------    
# I ADD THIS ONE TO COMPILE IN VSCODE AS ASKED IN THE DOCUMENTATION
#---------------------------------------------------------------------
set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} "C:\\Qt\\5.15.0\\mingw81_64")
#---------------------------------------------------------------------

project(untitled LANGUAGES CXX)

set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

find_package(Qt5 COMPONENTS Widgets LinguistTools REQUIRED)

set(TS_FILES mainwindow.ts)

  add_executable(untitled
    main.cpp
    mainwindow.cpp
    mainwindow.h
    mainwindow.ui
    ${TS_FILES}
  )

target_link_libraries(untitled PRIVATE Qt5::Widgets)

qt5_create_translation(QM_FILES ${TS_FILES})

并在main window.ts中重命名untitled\u fr\u fr.ts

也许,尝试从命令中删除
${CMAKE\u SOURCE\u DIR}
qt5\u创建翻译(QM\u FILES${CMAKE\u SOURCE\u DIR}${ts\u FILES}
。包括此
${CMAKE\u SOURCE DIR
参数将处理
CMAKE_SOURCE_DIR
中的源代码,但您似乎已经明确添加了该目录中的
TS_文件
源代码,因此两个参数都是多余的…@squareskittles感谢您的回答。它工作得更好,但仍然无法生成../untitled_fr_fr.TS[build]lupdate错误:列表文件“”不可读。[build]mingw32 make.exe[2]:***[CMakeFiles\untitled.dir\build.make:81:../untitled\u fr\u fr.ts]错误1道歉,我之前的评论可能有点误导。这方面的文档有点不清楚。似乎需要列出的
.ts
文件具有相同名称的相应源文件。因此,您的
无标题的\u fr\u fr.ts
文件可能需要相应的
无标题的\u fr\u fr.cpp
文件y重命名您的
.ts
文件以匹配其中一个
.cpp
文件。谢谢,并且…将未命名的\u fr\u fr.ts重命名为mainwindow.ts并将集合(ts\u files untitled\u fr\u fr.ts)更改为集合(ts\u files mainwindow.ts)后,此功能将正常工作。但我不明白为什么:-我不需要在QTCreator中这样做-如果我有多个窗口,它是如何工作的?我是stackoverflow新手,我不知道现在该怎么做,我需要回答我自己的问题吗?是的,不幸的是我看到的不清楚,也不清楚为什么QTCreator不需要更改。文档建议参数可以是ts文件或源,因此对于多个文件,您可以执行类似于
qt5\u创建\u翻译的操作(QM\u files mainwindow.cpp mainwindow.ts otherwindow.cpp otherwindow.ts…)
。我现在没有办法测试它。但是,是的,回答你自己的问题来记录什么起作用是有帮助的,这将有助于未来的访问者了解你的问题。