代码之家  ›  专栏  ›  技术社区  ›  creataur

CMake在启动目标时删除复制到Debug文件夹的.dll文件

  •  0
  • creataur  · 技术社区  · 2 年前

    我试图在VS代码中设置vcpkg和CMake,以便与MSVC编译器一起使用。 我遵循了这个指南 https://learn.microsoft.com/en-us/vcpkg/examples/installing-and-using-packages

    当我第一次使用状态栏中的CMake选项“Launch”启动目标时,程序运行得很完美。我试着第二次启动,做了一个小改动,但没有成功。

    过了一段时间,我发现第一次建造这个项目效果很好。如果我转到Debug文件夹,我可以看到main.exe和sqlite3.dll文件。当我执行main.exe时,它会执行它应该执行的操作。

    在使用CMake构建项目后,当我单击“启动目标”时,.dll文件会自动删除,因此我会清理并重建,从而恢复.dll文件。

    我的问题是,当我在vscode的状态栏中按Launch时,有没有办法阻止CMake删除.dll文件?

    项目中的文件:

    CMakeLists.txt

    # CMakeLists.txt
    cmake_minimum_required(VERSION 3.0)
    project(test)
    
    # Set the path to the toolchain file
    set(CMAKE_TOOLCHAIN_FILE "C:/vcpkg/scripts/buildsystems/vcpkg.cmake")
    
    set(unofficial-sqlite3_DIR "C:/vcpkg/packages/sqlite3_x64-windows/share/unofficial-sqlite3")
    
    find_package(unofficial-sqlite3 CONFIG REQUIRED)
    
    add_executable(test main.cpp)
    
    target_link_libraries(test PRIVATE unofficial::sqlite3::sqlite3)
    

    main.cpp

    // main.cpp
    #include <sqlite3.h>
    #include <stdio.h>
    #include <iostream>
    
    int main(){
        std::cout << sqlite3_libversion() << std::endl;
        std::cout << "Hello, World" << std::endl;
        return 0;
    }
    
    0 回复  |  直到 2 年前
    推荐文章