使用Cmark在VS下构建QT5.14项目

1、IDE环境:

VS2022/QT5.14
安装QT5.14,并将库配置到环境变量
环境变量下创建path路径,放置QT安装目录下的lib文件
D:\Qt\Qt5.14.2\5.14.2\msvc2017\bin
安装VS2022社区版,并安装QT VS Tools扩展
扩展内点击QTVersion,设置Version
在这里插入图片描述VS中配置QT扩展和QT库引用

2、Cmark安装

官网下载Cmark安装包:https://cmake.org/
Cmark参考文档连接:https://cmake.org/cmake/help/latest/
点击exe安装
在这里插入图片描述
并将安装目录下bin文件配置到环境变量的path目录下:
C:\Program Files\CMake\bin

3、创建根目录下.cpp/.h/.ui文件

首先创建main.cpp文件,放置在项目最外侧目录下
在modules下创建源码,mainwindow,其中包含mainwindow.cpp/mainwindow.h/mainwindow.ui文件
因为小编习惯性将源码src单独按照模块分类放置
在这里插入图片描述
在这里插入图片描述
mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <iostream>

MainWindow::MainWindow(QWidget *parent) :
	QMainWindow(parent),
	ui(new Ui::MainWindow)
{
	ui->setupUi(this);

	/*主界面风格设计*/
	this->setFocusPolicy(Qt::StrongFocus);
	//设置无边框风格
	//setWindowFlags(this->windowFlags() | Qt::FramelessWindowHint);
	setMinimumSize(1280, 852);
}

MainWindow::~MainWindow()
{
	delete ui;
}

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

#include "./ui_mainwindow.h"

namespace Ui {
	class MainWindow;
}

class MainWindow : public QMainWindow
{
	Q_OBJECT

public:
	explicit MainWindow(QWidget *parent = nullptr);
	~MainWindow();

private:
	Ui::MainWindow *ui;
};

#endif // MAINWINDOW_H

main.cpp

#include <QApplication>
#include <iostream>
#include "mainwindow/mainwindow.h"

using namespace std;

QtMessageHandler defaultMessageHander_g;


int main(int argc, char *argv[]) {
	QApplication app(argc,argv);

	MainWindow mainWindow;
	mainWindow.show();

	//std::cout << "in func main" << std::endl;

	return app.exec();
}

然后打开QT-Desger
创建一个mainwindow.ui的ui文件,放置在上面的文件夹内
在这里插入图片描述
放置好后开始做CmarkLists.tex文件

4、Cmark中CMakeLists.txt创建

将下面代码放置在txt中并命名好,放置在项目下同级目录内

cmake_minimum_required(VERSION 3.20)

set(ProjectName LeaperVison)

project(${ProjectName} VERSION 0.1 LANGUAGES CXX)

if(WIN32)
    add_compile_options(/wd4996)
endif()

set(CMAKE_INCLUDE_CURRENT_DIR ON)

set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)


set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

set(QT_VERSION_MAJOR 5)
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets Charts Network OpenGL AxContainer)


set(PROJECT_SOURCES main.cpp)

	
set(modules_root ${CMAKE_CURRENT_SOURCE_DIR}/Modules)
include_directories(${modules_root})
file(GLOB_RECURSE Modules_SOURCES ${modules_root}/*.h ${modules_root}/*.hpp ${modules_root}/*.cpp ${modules_root}/*.ui)

list(APPEND PROJECT_SOURCES ${Modules_SOURCES})

# 按目录结构加入文件
function(add_file file)
    if(MSVC)
        # 求出相对路径
        string(REPLACE ${CMAKE_CURRENT_SOURCE_DIR}/ "" rel_path_name ${file})
        # 删除相对路径中的文件名部分
        string(REGEX REPLACE "(.*)/.*" \\1 rel_path ${rel_path_name})
        # 比较是否是当前路径下的文件
        string(COMPARE EQUAL ${rel_path_name} ${rel_path} is_same_path)
        # 替换成Windows平台的路径分隔符
        string(REPLACE "/" "\\" rel_path ${rel_path})
        if(is_same_path)
            set(rel_path "\\")
        endif()
        # message(STATUS ${rel_path})
        source_group(${rel_path} FILES ${file})
    endif(MSVC)
endfunction()

foreach(file ${PROJECT_SOURCES})
        add_file(${file})
endforeach()


add_executable(${ProjectName} ${PROJECT_SOURCES} ${QRC})

target_link_libraries(${ProjectName} PRIVATE
    Qt${QT_VERSION_MAJOR}::Widgets
    Qt${QT_VERSION_MAJOR}::Charts
    Qt${QT_VERSION_MAJOR}::Network
    Qt${QT_VERSION_MAJOR}::OpenGL
    Qt${QT_VERSION_MAJOR}::AxContainer
)
if(MSVC)
    option(ISSUE ON)
    if(NOT ISSUE)
        set_property(TARGET ${ProjectName} APPEND PROPERTY COMPILE_OPTIONS /Zi)
        set_property(TARGET ${ProjectName} APPEND PROPERTY LINK_FLAGS /DEBUG)
    endif()
    target_compile_options(${ProjectName} PRIVATE $<$<CXX_COMPILER_ID:MSVC>:/bigobj>)
	#target_link_options(${ProjectName} PRIVATE "/SUBSYSTEM:CONSOLE")
endif()

set_target_properties(${ProjectName} PROPERTIES
    ${BUNDLE_ID_OPTION}
    MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION}
    MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}
    MACOSX_BUNDLE TRUE
    WIN32_EXECUTABLE TRUE
)

注意项目名称和部分路径要手动修改
随后打开Cmark
选择刚在的项目路径,一般C++路径文件会放置在项目下,并新建一个build文件夹
camrk会自动扫描到CmarkLists.txt,然后读取里面的配置,和包含文件等等内容;
在这里插入图片描述
随后点击condigure配置,无报错后再点进generate生成项目,随后打开项目,Openobject
在这里插入图片描述
点击项目生成,编译即可;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值