cmake --build .编译的时候报错

cmake --build .编译的时候报错

去copy github上面的仓库,下载到本地后用cmake编译报错了,换过cmake的版本也没用。

img

你把全过程复制给我

  • 这篇博客也许可以解决你的问题👉 :Ubuntu编译安装CMake
  • 除此之外, 这篇博客: 一个cmake的简单例子:来自github中的 文件结构 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • software root directory
     |
     +---doc
     |    |
     |    +---CMakeList.txt
     |    |
     |    +---Doxyfile.in
     |
     +---src
          |
          +---CMakeList.txt
          |
          +---some other source code file
  • 您还可以看一下 肖朝军老师的CMake 最佳实践课程中的 CMake 变量的作用域小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    首先,你需要确保以下几点:

    1. 确保你已经正确安装了最新版本的CMake,并且已经将CMake的路径添加到系统环境变量中。

    2. 在项目的根目录下创建一个CMakeLists.txt文件,用于配置项目的构建规则。在文件中,你需要包含需要构建的源代码文件,并设置编译参数和链接库等。

    3. 你需要创建一个version.h.in文件,用于存储Git的哈希值。这个文件会被CMake自动处理,生成最终的version.h文件。

    下面是一个示例的CMakeLists.txt文件的内容:

    # 设置项目名称
    project(MyProject)
    
    # 设置CMake最低版本要求
    cmake_minimum_required(VERSION 3.10)
    
    # 添加可执行程序
    add_executable(MyExecutable source1.cpp source2.cpp)
    
    # 设置生成的version.h的路径
    set(GIT_EXECUTABLE "path/to/git/executable")
    set(VERSION_HEADER_PATH "${CMAKE_CURRENT_BINARY_DIR}/version.h")
    
    # 通过执行git命令获取当前的Git哈希值
    execute_process(
        COMMAND ${GIT_EXECUTABLE} rev-parse HEAD
        WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
        OUTPUT_VARIABLE GIT_HASH
        OUTPUT_STRIP_TRAILING_WHITESPACE
    )
    
    # 将获取到的哈希值写入到version.h.in文件中
    configure_file(version.h.in ${VERSION_HEADER_PATH})
    
    # 将生成的version.h添加到可执行程序的源代码中
    target_include_directories(MyExecutable PUBLIC ${CMAKE_CURRENT_BINARY_DIR})
    
    # 将生成的version.h添加到生成规则中
    add_custom_target(generate_version_header ALL DEPENDS ${VERSION_HEADER_PATH})
    

    在以上示例中,我们通过execute_process命令执行了git rev-parse HEAD命令,获取到当前的Git哈希值,并将它存储在变量GIT_HASH中。然后,我们将这个哈希值写入到version.h.in文件中,通过configure_file命令生成version.h文件。最后,我们通过target_include_directories命令将生成的version.h添加到可执行程序的源代码中,使得它可以被访问到。

    请注意,你需要将上面代码中的"source1.cpp"和"source2.cpp"替换为你的实际源代码文件。

    在以上的示例中,我们还添加了一个add_custom_target命令,用于将生成version.h的过程作为一个生成规则。这样,在每次构建时,CMake都会执行这个生成规则,确保version.h的内容是最新的。

    最后,你可以在你的源代码中包含version.h头文件,并使用其中的Git哈希值。

    希望以上解决方案能够帮助你解决问题,如果还有其他疑问,请随时提出。