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

[cmake]how to include and link system libraries on windows using cmake

本文关键字:cmake 包含 系统库 链接 何使用 windows      更新时间:2023-10-16

这是我的cpp代码:

#pragma once
#include <cstdio>
int main(char** args, int size)
{
    printf("aaaaan");
    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_Filesx86Microsoft Visual Studio 14.0VCincludecstdio(36): error C2054: expected '(' to follow 'using' [E:cmake-testapp.vcxproj]
D:Program_Filesx86Microsoft Visual Studio 14.0VCincludecstdio(36): error C2061: syntax error: identifier 'using' [E:cmake-testapp.vcxproj]

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

#pragma once
int main(char** args, int size)
{
    return 1;
}

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

是我没有指定windows SDK的includes和libraries的问题吗?如果是,我如何配置它们?

文件cstdio可能包含C++特定的内容。C++是C子集的超集,所以不是每个C++代码都是有效的C。

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

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

要解决问题:

  • #include <stdio.h>(并按原样编译为C)

  • 将文件重命名为.cpp(以便将其编译为C++)