Giter Site home page Giter Site logo

Comments (19)

Evelyn-001 avatar Evelyn-001 commented on August 21, 2024 1

Verify this issue has been fixed. Thanks.
ENV:
VS code: 1.91.1
CMake Tools Extension: v1.19.19 (pre-release)
071201

from vscode-cmake-tools.

Luvideria avatar Luvideria commented on August 21, 2024

I would like to add that I can't find the correct way to simply add more build types. The CMakeFiles I use have for instance ServRel or ToolRel as build types, which I can't access at all.

from vscode-cmake-tools.

Evelyn-001 avatar Evelyn-001 commented on August 21, 2024

Thanks for reporting this issue. Today we try to repro using a simple CMake Project, but we didn't repro it. We find that if we set the "CMAKE_BUILD_TYPE": "Release" in related configuration, and the -DCMAKE_BUILD_TYPE=Release displays on CMake output when configure the project. For further investigation, could you please share us a demo project with clear repro steps? We are looking forward to hearing from you. Thanks.

ENV:
VS code version: 1.90.0
CMake Extension version: 1.18.42

Please see the verified results as below.
0613VScode

from vscode-cmake-tools.

zchrissirhcz avatar zchrissirhcz commented on August 21, 2024

@Evelyn-001 Hi, thanks for the reply. This gif looks okay, and maybe I need a little time to learn to use CMakePresets.json. Actually I begin to use CMake since about CMake 3.12 or before that.

My previous trial was on a Apple M1 machine, which is not available now.
I'm currently using a Windows 11, x86-64 machine, and I can reproduce it.

I guess Ninja as generator is the key to reproduce.

Here is the detail:

  • C/C++ compiler: Visual Studio 2022 (17.10.1)
  • CMake: 3.29.5 (manually installed, instead of the VS2022 installed one)
  • Build Tool: Ninja 1.12.1 (manually installed, instead of the VS2022 installed one)

VSCode: Version: 1.90.0
VSCode CMake Tools plugin version: v1.18.42
VSCode User setting.json

{
    "cmake.generator": "Ninja",
    "cmake.pinnedCommands": [
        "workbench.action.tasks.configureTaskRunner",
        "workbench.action.tasks.runTask"
    ],
}

CMakeLists.txt

cmake_minimum_required(VERSION 3.29)
project(x)
message(STATUS "[x] CMAKE_BUILD_TYPE: ${CMAKE_BUILD_TYPE}")
add_executable(x x.c)

x.c:

int main() {}

CMake Configure output by CMake: Configure in VSCode command palette:
image

Do I set CMAKE_BUILD_TYPE environment variable? No
image

image

from vscode-cmake-tools.

zchrissirhcz avatar zchrissirhcz commented on August 21, 2024

@Evelyn-001 Using the aforementioned CMakeLists.txt and x.c files, I can reproduce the bug on my Apple-M1 machine, where I does not specify Ninja as generator:

  • VSCode version: 1.90.0
  • CMake version: 3.29.5
  • VSCode CMake Tools extension version: v1.18.42
  • VSCode User settings.json keep minimal as:
{
    "cmake.pinnedCommands": [
        "workbench.action.tasks.configureTaskRunner",
        "workbench.action.tasks.runTask"
    ]
}
  • Environment variable CMAKE_BUILD_TYPE is not defined
  • All VSCode instances closed and restarted
截屏2024-06-13 20 04 06

I suggest removing the use of CMakePresets.json for a clean reproduce.

from vscode-cmake-tools.

Evelyn-001 avatar Evelyn-001 commented on August 21, 2024

Thanks for your reply. According to your comment, we try to repro it using above demo files, please see the verified results as below. Is it your issue? Thanks.
ENV:
VS code version: 1.90.0
CMake Extension version: 1.18.42
061404

from vscode-cmake-tools.

zchrissirhcz avatar zchrissirhcz commented on August 21, 2024

Thanks for your reply. According to your comment, we try to repro it using above demo files, please see the verified results as below. Is it your issue? Thanks. ENV: VS code version: 1.90.0 CMake Extension version: 1.18.42 061404 061404

Thanks for the reply. The verified result you provided in the gif is nearly what I thing the issue is. And to be precise, I think there are two sub-issues:

  1. When the C/C++ compiler is cl.exe, if specified Ninja as generator in settings.json, the bug appears
  2. When the C/C++ compiler is Clang, including Clang.exe from Visual Studio (for Windows), and AppleClang (for macOS), the bug appears

from vscode-cmake-tools.

Evelyn-001 avatar Evelyn-001 commented on August 21, 2024

This issue reproduces with below Conditions:

  1. When the C/C++ compiler is cl.exe, if specified Ninja as generator in settings.json, the bug appears
  2. When the C/C++ compiler is Clang, the bug appears

ENV
VSCode version: 1.90.1
CMake version: 3.28.3-msvc11
Ninja version: 1.11.0
VSCode CMake Tools extension version: v1.18.42

image
339677189-1b80d526-7837-4b98-ab9b-391739f02862

from vscode-cmake-tools.

Evelyn-001 avatar Evelyn-001 commented on August 21, 2024

@gcampbell-msft, if user do not explicitly specify a value for CMAKE_BUILD_TYPE when executing CMake, or do not explicitly set it before building, will CMake choose a default CMAKE_BUILD_TYPE of Debug? Coud you please help look at this issue? Thanks in advance.

from vscode-cmake-tools.

gcampbell-msft avatar gcampbell-msft commented on August 21, 2024

@Evelyn-001 Yes, if there is no CMAKE_BUILD_TYPE specified, then the default is Debug.

from vscode-cmake-tools.

zchrissirhcz avatar zchrissirhcz commented on August 21, 2024

@Evelyn-001 Yes, if there is no CMAKE_BUILD_TYPE specified, then the default is Debug.

😂😂 Could you please drop this default "Debug"? I think this "Debug" may sometimes become a "Bug" in my C/C++ projects

from vscode-cmake-tools.

gcampbell-msft avatar gcampbell-msft commented on August 21, 2024

@zchrissirhcz @Evelyn-001 Let me take some time to investigate, I actually believe I may have been wrong about our default, let me look more closely into it and get you the full understanding and context. Thanks!

from vscode-cmake-tools.

gcampbell-msft avatar gcampbell-msft commented on August 21, 2024

@zchrissirhcz Okay I've investigated closer and we do in fact default to "Debug". What are you expecting the default to be? I'm guessing simply an empty string?

from vscode-cmake-tools.

gcampbell-msft avatar gcampbell-msft commented on August 21, 2024

@zchrissirhcz Follow up to help us understand your scenario better, is there a reason that you don't want to explicitly set the build type?

from vscode-cmake-tools.

zchrissirhcz avatar zchrissirhcz commented on August 21, 2024

I think CMAKE_BUILD_TYPE should be set by user, and a default value provided by "VSCode CMake Tools" is not required. Consider this case: a cross-platform C/C++ project, in its CMakeLists.txt, automatically detect and set value for CMAKE_BUILD_TYPE:

cmake_minimum_required(VERSION 3.5)
projet(x)
if(NOT CMAKE_BUILD_TYPE)
  set(CMAKE_BUILD_TYPE "Release" CACHE STRING "Choose the type of build." FORCE)
endif()
message(STATUS "[x] CMAKE_BUILD_TYPE: ${CMAKE_BUILD_TYPE}")

When invoked in command like:

cmake -S . -B build

it will print [x] CMAKE_BUILD_TYPE: Release

But when invoked in VSCode CMake Tools' "cmake configure", it prints [x] CMAKE_BUILD_TYPE: Debug.

I see this usage in:

@gcampbell-msft @Evelyn-001

from vscode-cmake-tools.

zchrissirhcz avatar zchrissirhcz commented on August 21, 2024

@zchrissirhcz Okay I've investigated closer and we do in fact default to "Debug". What are you expecting the default to be? I'm guessing simply an empty string?

@gcampbell-msft
To be precise, I expect CMake Tools extension not passing -DCMAKE_BUILD_TYPE=Debug, and also don't passing -DCMAKE_BUILD_TYPE="".

An empty string (-DCMAKE_BUILD_TYPE="") will also make existing project's CMakeLists.txt not working as expected. Just don't passing this variable by default.

If user do specify CMAKE_BUILD_TYPE in settings by UI/json file, passing that value. And this value can be one of : Debug, Release, MinSizeRel, RelWithDebInfo. And meanwhile, user can also specify other values, such as ToolRel in @Luvideria 's case.

from vscode-cmake-tools.

gcampbell-msft avatar gcampbell-msft commented on August 21, 2024

@zchrissirhcz Thanks for all of this information, we will definitely assess this on the backlog and investigate. Again, thanks!

from vscode-cmake-tools.

smp73 avatar smp73 commented on August 21, 2024

Brief Issue Summary

CMake: Configure always uses -DCMAKE_BUILD_TYPE:STRING=Debug even if I delete CMAKE_BUILD_TYPE or set CMAKE_BUILD_TYPE=Release in setting of CMake Tools extension, and I've already set environment variable: export CMAKE_BUILD_TYPE=Release

CMake Tools Diagnostics

{
  "os": "darwin",
  "vscodeVersion": "1.90.0",
  "cmtVersion": "1.18.41",
  "configurations": [
    {
      "folder": "/Users/zz/work/cppsober/kcv",
      "cmakeVersion": "3.29.5",
      "configured": true,
      "generator": "Ninja",
      "usesPresets": false,
      "compilers": {
        "C": "/Library/Developer/CommandLineTools/usr/bin/cc",
        "CXX": "/Library/Developer/CommandLineTools/usr/bin/c++"
      }
    }
  ],
  "cpptoolsIntegration": {
    "isReady": true,
    "hasCodeModel": true,
    "activeBuildType": "Debug",
    "buildTypesSeen": [
      "Debug"
    ],
    "requests": [],
    "responses": [],
    "partialMatches": [],
    "targetCount": 7,
    "executablesCount": 1,
    "librariesCount": 3,
    "targets": [
      {
        "name": "birch-autotimer-update",
        "type": "UTILITY"
      },
      {
        "name": "imgui",
        "type": "STATIC_LIBRARY"
      },
      {
        "name": "konacv",
        "type": "STATIC_LIBRARY"
      },
      {
        "name": "test",
        "type": "EXECUTABLE"
      },
      {
        "name": "glfw",
        "type": "STATIC_LIBRARY"
      },
      {
        "name": "update_mappings",
        "type": "UTILITY"
      }
    ]
  },
  "settings": [
    {
      "communicationMode": "automatic",
      "useCMakePresets": "never",
      "configureOnOpen": false
    }
  ]
}

Debug Log

No response

Additional Information

No response

12bc6cdb375f9688ba2eff535c36b26dbbaff710

from vscode-cmake-tools.

Evelyn-001 avatar Evelyn-001 commented on August 21, 2024

@smp73, thanks for your reply. Do you want to use -DCMAKE_BUILD_TYPE:STRING=Release ? you need to add Adding "configuration": "release" in CMakePresets.json file. Please refer to this comment in that issue. Thanks.

from vscode-cmake-tools.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.