Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

macOS: CONFIG+=serveronly needs two changes, not one

未关闭
#3,914 2 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

维护者通常 5 天内回复

还没有人认领这个 Issue。

评估

难度
3/5
预计耗时
1-2 天
新手友好度
78/100
Issue 类型
缺陷
描述清晰度
描述清楚
活跃度
活跃
技术栈
cpp, macos
领域
build-system

调研方向

从 Jamulus.pro 中的 macx 源文件列表和现有的 serveronly 条件开始,然后查看 COMPILING.md 中的编译时参数表和 Linux 示例。在 macOS 上使用 CONFIG+=serveronly CONFIG+=headless 运行 qmake,并验证 server-only 构建能够正确链接,且 Jamulus.app/Contents/MacOS/Jamulus --version 以服务器模式启动。更新文档,准确描述 macOS 支持和相关选项。

由索引模型根据 Issue 内容生成。

描述

macOS needs documentation

🤖 AI: #2551 left macOS out of CONFIG+=serveronly with an open invitation — "The MacOS build might be feasible but there were the bundle options already there and I've no way to check what's going on with the MacOS build. If someone else wants to have a go at that, add DEFINES += SERVER_ONLY and see if it works." Now it is run on a Mac, at c862872e, macOS 12.7.6, Qt 5.15.2, command-line qmake+make, x86_64.

That change does most of it, and is not sufficient. With DEFINES += SERVER_ONLY added to the macx branch and nothing else, the define reaches every compile line and all 15 client-side undefined symbols go away. Nine remain, and every one of them is CSoundBase:

$ qmake Jamulus.pro CONFIG+=serveronly CONFIG+=headless && make -j2
Project MESSAGE: Restricting build to server-only due to CONFIG+=serveronly.
Project MESSAGE: Using CoreAudio.
[...]
Undefined symbols for architecture x86_64:
  "CSoundBase::ReinitRequest(int)", referenced from:
      CSound::deviceNotification(unsigned int, unsigned int, AudioObjectPropertyAddress const*, void*) in sound.o
  "CSoundBase::staticMetaObject", referenced from:
      CSound::staticMetaObject in moc_sound.o
  "vtable for CSoundBase", referenced from:
      CSoundBase::~CSoundBase() in sound.o
[6 further CSoundBase symbols, 9 in total]
ld: symbol(s) not found for architecture x86_64

The nine come from the second difference between the branches: the macx branch adds coreaudio-mac/sound.cpp unconditionally, while soundbase.cpp is stripped platform-independently — so CSound is compiled without its base class. win32 does not hit this because its ASIO sources sit inside the else-branch of its own serveronly test. So macOS needs two changes, not one: the missing define, and a serveronly guard around the CoreAudio sources. With both, a plain CONFIG+=serveronly CONFIG+=headless build links and runs:

$ qmake Jamulus.pro CONFIG+=serveronly CONFIG+=headless && make -j2
Project MESSAGE: Restricting build to server-only due to CONFIG+=serveronly.
Project MESSAGE: Server-only build: skipping CoreAudio.
[...]
$ Jamulus.app/Contents/MacOS/Jamulus --version
- Starting in server mode by default (due to compile time option)
 *** Jamulus, Version 3.12.4dev-nogit

With neither change the option half-applies rather than being ignored: five platform-independent !contains(CONFIG, "serveronly") blocks strip client sources while SERVER_ONLY stays undefined, and the link fails with 24 undefined symbols.

No released artifact is affected: the macOS server app is built by mac/deploy_mac.sh with CONFIG+=server_bundle alone, which keeps both sound files — built at the same commit here, 0 errors, JamulusServer starts in server mode.

Documentation is affected either way: the compile-time arguments table marks server_bundle "macOS only" and jackonmac "on macOS", while serveronly carries no platform qualifier and its one worked example, qmake "CONFIG+=headless serveronly", sits under ## Linux.


🤖 This message was written by AI and reviewed by @mcfnord.

主要语言
C
星标
1.1k
派生
248
平均合并
7 天 4 小时
30 天内合并 PR
5

环境准备

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

jamulussoftware/jamulus 的其他 Issue

查看 jamulussoftware/jamulus 的全部 Issue

相似的 Issue

更多 C Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。