我有一个关于程序编译的问题。我不知道为什么同样的CMakeLists.txt在QTcreator中编译,而不是在Visual Studio中编译。我使用的是完全相同的编译器,即MinGW for Windows。我已经阅读了文档,它编译得很好。除此以外 如果使用翻译文件 untitled_fr_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})
并重新命名 untitled_fr_FR.ts 在 mainwindow.ts