使用CMake编译QTCreator和VisualStudio代码
我对程序的编写有一个问题。我不知道为什么同样的CMakeLists.txt在QTcreator中编译,而不是在Visual Studio中编译。我使用的编译器与MinGW for Windows完全相同。我已经阅读了文档,除了使用翻译文件未命名的\u fr\u fr.ts,它编译得很好 请参阅CMakeLists.txt使用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) #--------------------------------------------------
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…)
。我现在没有办法测试它。但是,是的,回答你自己的问题来记录什么起作用是有帮助的,这将有助于未来的访问者了解你的问题。