标签: cmake-gui

CMake变量的"option"和"set CACHE BOOL"有什么区别?

以下两个之间有什么区别吗?

set(FOO true CACHE BOOL "description")

option(FOO "description" ON)
Run Code Online (Sandbox Code Playgroud)

文档:set - 选项

背景:即使我已经使用CMake一段时间了,我option今天才注意到这个命令,因此我一直在使用set:我想知道用第二个替换第一个是否安全/值得.

boolean global-variables cmake cmake-gui

37
推荐指数
2
解决办法
1万
查看次数

CMake:无法运行MSBuild命令:MSBuild.exe

我正在尝试使用Windows 10上的GUI 构建FIATCMake.

CMake Error at CMakeLists.txt:3 (project):
  Failed to run MSBuild command:

    MSBuild.exe

  to get the value of VCTargetsPath:
Configuring incomplete, errors occurred!
Run Code Online (Sandbox Code Playgroud)

我配置CMake使用Visual Studio 15 2017编译器.

我怎样才能解决这个问题?

如果需要,这是CMakeLists.txt文件

cmake_minimum_required(VERSION 3.2)
include(CheckCXXCompilerFlag)
project(FIAT CXX)

set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)

if(CHECK_CXX_COMPILER_USED1)
# Using Visual Studio C++
elseif("${CMAKE_CXX_COMPILER_ID}x" STREQUAL "MSVCx")
# Using Intel C++
elseif("${CMAKE_CXX_COMPILER_ID}x" STREQUAL "Intelx")
else(CHECK_CXX_COMPILER_USED1)
    # GCC or Clang
    # At least C++11
    CHECK_CXX_COMPILER_FLAG("-std=c++17" COMPILER_SUPPORTS_CXX17)
    CHECK_CXX_COMPILER_FLAG("-std=c++1z" COMPILER_SUPPORTS_CXX1Z)
    CHECK_CXX_COMPILER_FLAG("-std=c++14" COMPILER_SUPPORTS_CXX14)
    CHECK_CXX_COMPILER_FLAG("-std=c++1y" COMPILER_SUPPORTS_CXX1Y)
    CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11)
    if(COMPILER_SUPPORTS_CXX17) …
Run Code Online (Sandbox Code Playgroud)

c++ msbuild cmake cmake-gui

28
推荐指数
6
解决办法
6万
查看次数

适用于Linux的CMake GUI在哪里?

我在我的Ubuntu Linux上安装了CMake.试图在Linux中运行CMake GUI.我发现它适用于Windows,但在哪里获取它以及如何在Linux中运行?

ubuntu cmake cmake-gui

21
推荐指数
4
解决办法
5万
查看次数

如何将cmake指向zlib包含路径?

或任何包含目录/库.

我使用cmake gui工具,所以我运行它,通常gui将突出显示它找不到的包含或库,并让你打开一个打开的对话框来设置路径,但它不会为这个cmake cofig做那个它告诉你的gui工具输出中的红色文字,所以,

CMake Error at C:/Program Files/CMake/share/cmake-3.0/Modules/FindPackageHandleStandardArgs.cmake:136 (message):
  Could NOT find ZLIB (missing: ZLIB_LIBRARY ZLIB_INCLUDE_DIR)
Call Stack (most recent call first):
  C:/Program Files/CMake/share/cmake-3.0/Modules/FindPackageHandleStandardArgs.cmake:343 (_FPHSA_FAILURE_MESSAGE)
  C:/Program Files/CMake/share/cmake-3.0/Modules/FindZLIB.cmake:101 (FIND_PACKAGE_HANDLE_STANDARD_ARGS)
  src/CMakeLists.txt:7 (find_package)
Run Code Online (Sandbox Code Playgroud)

所以仍然使用gui如何将cmake指向zlib包括dir?

directory build path cmake cmake-gui

13
推荐指数
3
解决办法
3万
查看次数

CMake"make install"或在Windows中包含库

我正在尝试创建一个开源C++项目.我希望它尽可能容易构建,但同时跨平台.我不需要像boost或Qt这样的gui或重型库,所以我决定使用GitHub,CMake和LibSourcey.我的问题是,我无法找到一种方法来使我的项目易于在Windows中构建,这是我的开发环境.如何在Windows中"安装"一个库以便在我的项目中使用?我甚至必须在Windows中安装它吗?是否可以自动下载,构建和链接它?

在Windows上,除了安装程序之外,我还想制作一个可移植版本,因此不需要任何硬编码库路径.

我认为,在某些平台上,如Linux,库是可分离构建的,并由维护者打包.所以我不应该只捆绑我自己的副本.

所以,我的问题是:我如何建立一个跨平台且易于构建的项目,以及最佳实践是什么?

c++ windows github cmake cmake-gui

10
推荐指数
1
解决办法
1278
查看次数

当CLI在一个命令中执行所有操作时,为什么GUI配置和生成中有两个按钮

我知道cmake是构建生成器.这意味着它可以根据CMakeLists.txt的指令生成适当的构建(makefile,Visual Studio项目等).但我不明白我认为有两个相关的事情:

  1. 为什么cmake-gui中有两个按钮"Configure"和"Generate"?在我读过的命令行教程(例如这个)中,通常的过程是用一个cmake命令完成的.

  2. 什么是cmake世界的缓存?AFAIK是按下"配置"按钮时的状态,但未按下"生成"按钮.但为什么这有用呢?按"配置"后弹出的所有变量是什么意思?为什么我应该编辑它们?是不是唯一允许通过CMakeLists.txt完成的配置?

谢谢

cmake cmake-gui

9
推荐指数
1
解决办法
2312
查看次数

Assimp模型加载库安装/链接故障

我正在尝试安装Assimp以用于我的项目,但我遇到了一些麻烦.我目前正在使用win 10 pro和visual studio 15 2017.

  1. 我已经下载了Assimp 4.0.1.zip,将其解压缩到一个目录中,加载了cmakeGui并运行了两次配置,然后生成了Assimp/build目录.

  2. 接下来我进入了Assimp/build,我运行了Assimp.sln并选择了ALL_BUILD,我认为它是.然后我复制了.lib和.dll旁边的/ code/debug中的所有文件,并将它们全部移动到我的exe所在的项目的Debug目录中.我将.lib复制到我的opengl/libs目录中,并将/ include中的所有头文件从最初提取的下载文件复制到我的opengl/includes/assimp目录中.

  3. 最后,我调整了我的项目链接器设置,以包括assimp.lib和assimp.dll(简化此帖子的别名)

当我尝试构建项目时,它说它无法打开dll,在进行实验时,我将dll复制到项目目录中,并与main.cpp和我的其他文件一起再次运行,这次它说"文件无效或损坏:无法读取在0x378"


可以肯定地说我需要研究编译,链接和cmake,但现在我开始了.

在我将标题包含在我的项目中之后,我得到它以停止抱怨,我以为我有它工作(也许我做...).为此,我从新的,构建的Assimp开始,像以前一样,将所有带有dll的文件移动到我的libs目录中,将所有包含从下载中转储到我的包中,同时将config.h从构建移动到此目录中.然后我在项目中设置链接器设置,并没有将任何内容移动到我的项目目录中.

之后,它停止了抱怨,所以我继续我正在关注的教程系列.我编译了,得到了一大堆错误,把它们修改为0然后突然我得到了8个新的错误.

严重级代码描述项目文件行抑制状态错误LNK2019未解析的外部符号_aiGetMaterialTextureCount在函数"public:unsigned int __thiscall aiMaterial :: GetTextureCount(enum aiTextureType)const"中引用(?GetTextureCount @ aiMaterial @@ QBEIW4aiTextureType @@@ Z)opengl_model_loading F:\ Desktop\MyDocuments\Tuts\opengl\getting started\opengl_model_loading\opengl_model_loading\main.obj 1

这个错误让我感觉这可能是由于dll.请指教.

c++ opengl dll assimp cmake-gui

8
推荐指数
1
解决办法
2655
查看次数

CMake工作流程?

我正在学习CMake,我在理解其多步骤工作流程时遇到了问题.到目前为止,我的理解是你:

  • 写一个 CMakeLists.txt
  • cmake从子目录运行以生成构建文件(在我的情况下为Makefile)
  • make

但是,我不明白你应该如何处理不同的目标(Release vs Debug).通过在两个不同的子目录中运行CMake?

另外,我不明白你为什么要编辑CMakeCache.txt(还有一个GUI工具)../configure通过传递不同的选项来模仿你将要实现的目标?

cmake cmake-gui

6
推荐指数
1
解决办法
2044
查看次数

CMake,Exe 找不到 DLL

所以我试图在 Windows 上用 cmake 设置一个项目

这是我的项目结构的样子:

  • 游戏引擎
    • .git
    • 建造
    • 包括
    • 来源
    • 测试
    • CMakeLists.txt

这个想法是“source”目录包含GameEngine库的所有.cpp文件,“include”目录包含所有头文件,“testing”目录用于测试库。所以它应该依赖于 GameEngine.dll 和 GameEngine.lib(在 Windows 上)。

我的顶级CMakesLists.txt 包含:

    cmake_minimum_required(VERSION 2.7)
    PROJECT( GameEngine )

    include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include )

    ADD_SUBDIRECTORY( source )
    add_subdirectory( testing )
Run Code Online (Sandbox Code Playgroud)


“源”目录中 的 CMakeLists.txt包含:

    project(GameEngineLib)

    file(GLOB src "*.cpp" "../include/*.h")

    add_library(${PROJECT_NAME} SHARED ${src})
Run Code Online (Sandbox Code Playgroud)


并且“testing”目录中的 CMakeLists.txt包含:

    project(Testing)

    file(GLOB src "*.h" "*.cpp")

    ADD_EXECUTABLE( ${PROJECT_NAME} ${src})
    target_link_libraries(${PROJECT_NAME} GameEngineLib)
Run Code Online (Sandbox Code Playgroud)


这一切在 linux 上都可以正常工作。
当我构建它时,我得到两个文件夹(+ 一些其他文件夹),“testing”和“source”以及一个输出可执行文件和 .so 文件的 Makefile。
并且可执行文件已经知道在哪里可以找到 .so 文件,所以我可以毫无错误地运行。


当我使用 Visual Studio 在 Windows 上构建时,问题就出现了。
一切正常,除了我在构建“ALL_BUILD”项目后得到的测试可执行文件给我一个错误,说它找不到 …

c++ cmake visual-studio cmake-gui

6
推荐指数
2
解决办法
6059
查看次数

如何从 cmake(3.10 版本)将 CUDA 架构设置为 compute_50 和 sm_50?

我的项目使用带有 Visual Studio 的 CMake-GUI。我的系统上没有安装 GPU 卡。生成的Visual Studio 解决方案将nvcc 标志设置为compute_30 和sm_30,但我需要将其设置为compute_50 和sm_50。

我使用带有 64 位编译的 CMake 3.10.1 和 Visual Studio 14 2015。

我希望取代 CMake 的默认设置。我没有使用 Find CUDA 方法来搜索和添加 CUDA。我在 CMAKE 中添加 CUDA 作为语言支持,VS 启用基于此的 CUDA Build 自定义。

c++ cuda cmake cmake-gui

6
推荐指数
3
解决办法
9186
查看次数