[cmake]如何使用 cmake 在 windows 上包含和链接系统库

Posted

技术标签:

【中文标题】[cmake]如何使用 cmake 在 windows 上包含和链接系统库【英文标题】:[cmake]how to include and link system libraries on windows using cmake 【发布时间】:2016-04-30 14:18:25 【问题描述】:

这是我的 cpp 代码:

#pragma once

#include <cstdio>

int main(char** args, int size)

    printf("aaaaa\n");
    return 1;

这是我的 CMakeLists.txt

cmake_minimum_required(VERSION 3.5)
set(PROJECT_ROOT_PATH "./")
add_executable(app $PROJECT_ROOT_PATH/app.c)

我的步骤运行命令如下:

cmake -G "NMake Makefiles" ./
nmake

当我运行nmake时,有很多这样的错误:

D:\Program_Filesx86\Microsoft Visual Studio 14.0\VC\include\cstdio(36): error C2054: expected '(' to follow 'using' [E:\cmake-test\app.vcxproj]
D:\Program_Filesx86\Microsoft Visual Studio 14.0\VC\include\cstdio(36): error C2061: syntax error: identifier 'using' [E:\cmake-test\app.vcxproj]

如果在那里保留一个空函数:

#pragma once

int main(char** args, int size)

    return 1;

nmake 可以正常工作并输出一个可执行文件:app.exe

是我没有指定 windows SDK 的包含和库的问题吗? 如果是这样,我该如何配置它们?

【问题讨论】:

【参考方案1】:

文件 cstdio 可能包含 C++ 特定的内容。 C++ 是 C 子集的超集,因此并非所有 C++ 代码都是有效的 C。

CMake 将您的 .c 文件编译为 C,因此会出现语法错误。

在您的情况下,错误的根源是 C 编程语言中不存在的 C++ using 语句。

解决问题:

#include &lt;stdio.h&gt;(并按原样编译为 C)

将文件重命名为.cpp(这样它就会被编译为C++)

【讨论】:

以上是关于[cmake]如何使用 cmake 在 windows 上包含和链接系统库的主要内容,如果未能解决你的问题,请参考以下文章

[cmake]如何使用 cmake 在 windows 上包含和链接系统库

如何在 CMake GUI 中显示 FooConfig.cmake 文件中的 CMake 变量?

【CMAKE】求助-cmake 请问谁知道CMAKE如何使用?真正的初学者,win7系统,使用VS2005

make如何指定cmake路径

如何使用CMake构建c++项目

如何在不使用 CMake 但仅使用 make 的项目中合并使用 CMake 的仅标头库?