如何编写混合 C 和 C++ 的 makefile

2024-01-10

在这个Makefile中,我不知道如何在同一个Makefile中混合C和C++编译出c对象。如果我首先编译 C 对象,然后运行这个 Makefile,它就可以工作。谁能帮我解决这个问题吗?提前致谢!

CXX = g++
CXXFLAGS = -Wall -D__STDC_LIMIT_MACROS


SERVER_SRC = \
    main.cpp

SERVER_SRC_OBJS = ${SERVER_SRC:.cpp=.o}


REDIS_SRC = \
    $(HIREDIS_FOLDER)/net.c \
    $(HIREDIS_FOLDER)/hiredis.c \
    $(HIREDIS_FOLDER)/sds.c \
    $(HIREDIS_FOLDER)/async.c

REDIS_SRC_OBJS = ${REDIS_SRC:.c=.o}


.SUFFIXES:
.SUFFIXES: .o .cpp
.cpp.o:
    $(CXX) $(CXXFLAGS) -I$(HIREDIS_FOLDER) \
    -c $< -o $*.o


all: server

net.o: net.c fmacros.h net.h hiredis.h
async.o: async.c async.h hiredis.h sds.h dict.c dict.h
hiredis.o: hiredis.c fmacros.h hiredis.h net.h sds.h
sds.o: sds.c sds.h


server: $(SERVER_SRC_OBJS) $(REDIS_SRC_OBJS)
    mkdir -p bin
    $(CXX) $(CXXFLAGS) -o bin/redis_main \
    -I$(HIREDIS_FOLDER) \
    $(REDIS_SRC_OBJS) \
    $(SERVER_SRC_OBJS) \
    -lpthread \
    -lrt \
    -Wl,-rpath,./


.PHONY: clean
clean:
    $(RM) -r bin/redis_main
    $(RM) ./*.gc??
    $(RM) $(SERVER_SRC_OBJS)
    $(RM) $(REDIS_SRC_OBJS)

G++ 可以并且将会很好地编译 .c 和 .cpp 源文件。

你什么really需要做的是添加“服务器”目标的依赖项。例如:

OBJ = net.o hiredis.o sds.o async.o

...

all: server

server: $(OBJ)

有一些非常好的提示本指南 http://wiki.wlug.org.nz/MakefileHowto.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何编写混合 C 和 C++ 的 makefile 的相关文章

  • 将复选框添加到 UniformGrid

    我正在尝试将复选框动态添加到 wpf 中的统一网格中 但看起来网格没有为它们分配足够的空间 所以它们都有点互相重叠 这就是我将它们添加到后面的代码中的方法 foreach string folder in subfolders PathCh
  • 检查两个数是否是彼此的排列?

    给定两个数字 a b 使得 1 例如 123 是 312 的有效排列 我也不想对数字中的数字进行排序 如果您指的是数字的字符 例如 1927 和 9721 则 至少 有几种方法 如果允许排序 一种方法是简单地sprintf将它们放入两个缓冲
  • 如何检查图像对象与资源中的图像对象是否相同?

    所以我试图创建一个简单的程序 只需在单击图片框中更改图片即可 我目前只使用两张图片 所以我的图片框单击事件函数的代码 看起来像这样 private void pictureBox1 Click object sender EventArgs
  • 是否可以强制 XMLWriter 将元素写入单引号中?

    这是我的代码 var ptFirstName tboxFirstName Text writer WriteAttributeString first ptFirstName 请注意 即使我使用 ptFirstName 也会以双引号结束 p
  • C# 和 Javascript SHA256 哈希的代码示例

    我有一个在服务器端运行的 C 算法 它对 Base64 编码的字符串进行哈希处理 byte salt Convert FromBase64String serverSalt Step 1 SHA256Managed sha256 new S
  • Qt-Qlist 检查包含自定义类

    有没有办法覆盖加载自定义类的 Qt QList 的比较机制 即在 java 中你只需要重写一个比较方法 我有一个带有我的自定义类模型的 QList QList
  • 如何使用GDB修改内存内容?

    我知道我们可以使用几个命令来访问和读取内存 例如 print p x 但是如何更改任何特定位置的内存内容 在 GDB 中调试时 最简单的是设置程序变量 参见GDB 分配 http sourceware org gdb current onl
  • 未解决的包含:“cocos2d.h” - Cocos2dx

    当我在 Eclipse 中导入 cocos2dx android 项目时 我的头文件上收到此警告 Unresolved inclusion cocos2d h 为什么是这样 它实际上困扰着我 该项目可以正确编译并运行 但我希望这种情况消失
  • 具有两个同名目标的 Makefile

    我有一个包含包含语句的 makefile 我无法控制包含的 makefile 的内容 不过 我希望能够在 某些 不是全部 目标之前添加一些预处理步骤 考虑以下示例 install echo install target include ot
  • 如何将图像和 POST 数据上传到 Azure 移动服务 ApiController 终结点?

    我正在尝试上传图片and POST表单数据 尽管理想情况下我希望它是json 到我的端点Azure 移动服务应用 我有ApiController method HttpPost Route api upload databaseId sea
  • 使用 System.Text.Json 即时格式化 JSON 流

    我有一个未缩进的 Json 字符串 例如 hash 123 id 456 我想缩进字符串并将其序列化为 JSON 文件 天真地 我可以使用缩进字符串Newtonsoft如下 using Newtonsoft Json Linq JToken
  • for循环中计数器变量的范围是多少?

    我在 Visual Studio 2008 中收到以下错误 Error 1 A local variable named i cannot be declared in this scope because it would give a
  • 将 unsigned char * (uint8_t *) 转换为 const char *

    我有一个带有 uint8 t 参数的函数 uint8 t ihex decode uint8 t in size t len uint8 t out uint8 t i hn ln for i 0 i lt len i 2 hn in i
  • 如何使我的表单标题栏遵循 Windows 深色主题?

    我已经下载了Windows 10更新包括黑暗主题 文件资源管理器等都是深色主题 但是当我创建自己的 C 表单应用程序时 标题栏是亮白色的 如何使我自己的桌面应用程序遵循我在 Windows 中设置的深色主题 你需要调用DwmSetWindo
  • C++ fmt 库,仅使用格式说明符格式化单个参数

    使用 C fmt 库 并给定一个裸格式说明符 有没有办法使用它来格式化单个参数 example std string str magic format 2f 1 23 current method template
  • 为什么我收到“找不到编译动态表达式所需的一种或多种类型。”?

    我有一个已更新的项目 NET 3 5 MVC v2 到 NET 4 0 MVC v3 当我尝试使用或设置时编译出现错误 ViewBag Title财产 找不到编译动态表达式所需的一种或多种类型 您是否缺少对 Microsoft CSharp
  • const、span 和迭代器的问题

    我尝试编写一个按索引迭代容器的迭代器 AIt and a const It两者都允许更改容器的内容 AConst it and a const Const it两者都禁止更改容器的内容 之后 我尝试写一个span
  • C 中的异或运算符

    在进行按位操作时 我在确定何时使用 XOR 运算符时遇到一些困难 按位与和或非常简单 当您想要屏蔽位时 请使用按位 AND 常见用例是 IP 寻址和子网掩码 当您想要打开位时 请使用包含或 然而 XOR 总是让我明白 我觉得如果在面试中被问
  • 如何在 C++ BOOST 中像图形一样加载 TIFF 图像

    我想要加载一个 tiff 图像 带有带有浮点值的像素的 GEOTIFF 例如 boost C 中的图形 我是 C 的新手 我的目标是使用从源 A 到目标 B 的双向 Dijkstra 来获得更高的性能 Boost GIL load tiif
  • 使用 libcurl 检查 SFTP 站点上是否存在文件

    我使用 C 和 libcurl 进行 SFTP FTPS 传输 在上传文件之前 我需要检查文件是否存在而不实际下载它 如果该文件不存在 我会遇到以下问题 set up curlhandle for the public private ke

随机推荐

  • 有没有办法将 Python/Tkinter 连接到已经运行的 Tcl/Tk 应用程序?

    我在 Pure Data 上做了很多工作 这是一个用 Tcl Tk 和 C 编写的应用程序 我希望能够为修改 Tcl Tk GUI 的插件制作一个 python API 为此 我似乎需要能够将正在运行的 Tk 实例传递给 python 然后
  • 将预构建的 APK 添加到 Android AOSP system.img

    我正在从源代码构建 AOSP 我想做的是在生成的 system img 中包含一些预构建的文件 作为 make 过程的一部分 我试图找到创建 system img 的实际文件并在其中添加几行 任何想法 先感谢您 将自定义文件添加到的好方法s
  • 连字符、下划线或驼峰命名法作为 URI 中的单词分隔符?

    我正在为 Intranet 应用程序设计一个基于 HTTP 的 API 我意识到这在宏伟的计划中只是一个很小的问题 但是 我应该使用连字符 下划线或驼峰命名法来分隔 URI 中的单词吗 以下是我的初步想法 骆驼香烟盒 如果服务器不区分大小写
  • 在 C++ Set 和 Vector 中取消引用迭代器时出错

    我正在编写这段代码 但收到此错误 错误 将 const std vector 作为 void std vector push back const value type 的 this 参数传递 with Tp metastock7 Allo
  • 仅从 Chrome 扩展程序安全访问 api

    我正在努力允许 Chrome 扩展通过发布数据向我的网站发布新条目 我希望能够将其锁定 以便只有 chrome 扩展可以发布 如果我从其他地方获取发布数据 我想拒绝它 有谁知道这是否 如何可能 或者你将如何去做 不幸的是 从 Web 服务器
  • 为 Matplotlib 创建默认值集

    我经常为自己的研究制作绘图 所有默认设置都很好 但经常必须切换到为演讲 演示设计绘图 我手动设置所有字体大小大一点 http www mailinglistarchive com html matplotlib users lists so
  • Elixir `mix` 命令抛出错误`无法调用 Module.put_attribute/3,因为模块 Helloworld.MixProject 已编译`

    使用命令设置新项目mix new project name它设置了一切 没有任何 错误或警告消息 cd 到项目并运行命令iex S mix它抛出错误 lib helloworld ex defmodule Helloworld do mod
  • “暂停”被忽略

    我读到我必须能够使用单个命令运行站点中的所有单元测试 因此我创建了一个 bat 文件来执行此操作 即使在结束前暂停 在 phpunit 命令之后 单元测试的结果也会在屏幕中闪烁 echo off cd c cd xampp cd htdoc
  • 访问 Android Wear Fit 数据

    我正在 Samsung Gear Live Google I O 版 上开发一款适用于 Android Wear 的应用程序 它将需要访问心率和步数历史数据 我知道稍后可以使用以下方式访问这些数据谷歌健身 SDK https develop
  • Android中如何获取当前SIM卡号码?

    我想知道 Android 中的用户手机号码 我使用了这个代码 但我没有得到号码 TelephonyManager tm TelephonyManager getSystemService Context TELEPHONY SERVICE
  • mysql 和 30 天

    我正在一个处理免费订阅的网站上工作 我现在想知道如何在 30 天不活动后取消订阅 我知道这必须通过 cron jobs 完成 但我不知道如何在 30 天后计数用户上次登录的时间 SELECT user id FROM users WHERE
  • Visual Studio Code 环绕

    我找不到任何方法可以在 VS Code 中用某些内容包围所选内容 For example doing something like that text gt text just by selecting the word text and
  • jq:错误:无法用字符串索引数组

    我正在尝试为检查点管理服务器 API 编写 bash 脚本 但遇到了一些问题 我想获取 json 字典中的值 为此我必须使用变量 我正在输入这个命令 echo rulebase jq arg n 0 rulebase n to 我收到下一个
  • 阻止浏览器重新发送 post 变量

    当用户尝试登录我的网站时 他的用户名和密码将作为 POST 变量发送 当页面加载时 我获取变量 处理它们并决定登录是否成功 然后 我呈现包含一条消息的页面 通知用户登录成功或失败 我的问题是 如果用户按 F5 或刷新 浏览器会提示他们重新发
  • 如何使用shadow DOM在动态加载的Web组件样式中加载@font-face

    我有一个带有 Shadow DOM 的 HTML 5 WebComponent 它显示的内容必须根据组件中显示的内容类型加载样式 样式表列表是从服务器获取的 我可以像这样加载样式表 for const style of styles con
  • Pandas 中的多索引排序

    我在 pandas df 中有一个包含多索引列的数据集 我想按特定列中的值进行排序 我的数据集如下所示 Group1 Group2 A B C A B C 1 1 0 3 2 5 7 2 5 6 9 1 0 0 3 7 0 2 0 3 5
  • 在 Objective-c xcode 中转换 android 的 AES 加密

    我必须使用类似于下面代码的 AES 加密和解密 需要像android那样传递类似的数据来生成KEY package encypt com import java io BufferedReader import java io FileRe
  • SSH -X“警告:不受信任的 X11 转发设置失败:未生成 xauth 密钥数据”

    嘿 我在使 ssh X 转发正常工作时遇到问题 设置是我ssh从 OSX Yosemite 主机进入我的 ubuntu VM 我已经在 OSX 上安装了 xQuartz 在 ubuntu 上安装了 xauth 并且我相信我已经在 ssh c
  • 使用滑块的模糊效果无法正常工作

    我使用滑块对图像进行模糊效果 我正在使用以下代码 let currentFilter CIFilter name CIGaussianBlur let beginImage CIImage image imgImage image curr
  • 如何编写混合 C 和 C++ 的 makefile

    在这个Makefile中 我不知道如何在同一个Makefile中混合C和C 编译出c对象 如果我首先编译 C 对象 然后运行这个 Makefile 它就可以工作 谁能帮我解决这个问题吗 提前致谢 CXX g CXXFLAGS Wall D