相关疑难解决方法(0)

使用CMake,Clang和Ninja在Windows上构建c ++项目

我目前在Windows上安装了cmake,clang和ninja.我正在尝试使用CMake生成一个忍者构建文件来编译一个非常简单的hello world程序.

我的CMakeLists.txt看起来像这样:

cmake_minimum_required(VERSION 2.8)
project(test_project)
add_executable(main main.cpp)
Run Code Online (Sandbox Code Playgroud)

main.cpp 是一个简单的hello world程序.

在命令行上我运行这个:cmake -G Ninja ..我得到以下错误:

-- The C compiler identification is Clang 3.5.0
clang.exe: error: no such file or directory: '/nologo'
clang.exe: error: no such file or directory: '/showIncludes'
-- The CXX compiler identification is Clang 3.5.0
clang.exe: error: no such file or directory: '/nologo'
clang.exe: error: no such file or directory: '/showIncludes'
-- Check for working C compiler using: Ninja
-- Check for working C compiler using: …
Run Code Online (Sandbox Code Playgroud)

c++ windows build clang ninja

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

CMAKE_SYSTEM_PROCESSOR 似乎是空的。与操作系统无关的最佳策略是什么?

我正在尝试根据处理器类型设置一堆 CXX 标志。

IF(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "x86_64")
    SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DAMD64")
ELSE()
    STRING(FIND ${CMAKE_SYSTEM_PROCESSOR} "86" 86_res)
    IF(${86_res} EQUAL -1)
        SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DIA32")
    ENDIF()
    STRING(FIND ${CMAKE_SYSTEM_PROCESSOR} "arm" arm_res)
    IF(${arm_res} EQUAL -1)
        SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DARM")
    ENDIF()
ENDIF()
Run Code Online (Sandbox Code Playgroud)

但无论出于何种原因 CMAKE_SYSTEM_PROCESSOR 为空并且无法运行 STREQUAL 比较。为什么这是空的?

现在我通过运行来设置它

EXEC_PROGRAM(uname ARGS -p OUTPUT_VARIABLE CMAKE_SYSTEM_PROCESSOR)
Run Code Online (Sandbox Code Playgroud)

但这在 Windows 上不起作用,所以我不确定我应该在这里做什么。

cmake

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

标签 统计

build ×1

c++ ×1

clang ×1

cmake ×1

ninja ×1

windows ×1