SwiftImGui
SwiftImGui copied to clipboard
Problem building because of missing references to math functions on Linux
Bug Description
Unsure if the problem is just me or my setup, but I could use some assistance on installation if possible.
I've added the SwiftImGui package to a new Swift project according to the README. On build it seems like there's a problem linking functions from math.h
.
Information
-
Package version:
1.82.0
-
Platform version:
Ubuntu 20.04
- Swift version:
Swift version 5.5.1 (swift-5.5.1-RELEASE)
Target: x86_64-unknown-linux-gnu
Checklist
- [x] If possible, I've reproduced the issue using the
main
/master
branch of this package. - [x] I've searched for existing issues under the issues tab.
- [x] The bug is reproducible
Steps to Reproduce
- Made a new project, by initializing it in an empty folder:
swift package init --type executable
- Added
SwiftImGui
toPackage.swift
according to the README:
import PackageDescription
let package = Package(
name: "TestProject",
dependencies: [
.package(url: "https://github.com/ctreffs/SwiftImGui.git", from: "1.82.0")
],
targets: [
.executableTarget(
name: "TestProject",
dependencies: [
.product(name: "ImGui", package: "SwiftImGui")
]),
.testTarget(
name: "TestProjectTests",
dependencies: ["TestProject"]),
]
)
- Added
import ImGui
to themain.swift
file - Tried building using
swift build
Expected behavior
Expected it to build the project.
Actual behavior
Seems like there was a problem linking math.h
.build/checkouts/SwiftImGui/Sources/CImGui/./imgui/imgui_internal.h:369: error: undefined reference to 'powf'
.build/checkouts/SwiftImGui/Sources/CImGui/./imgui/imgui_internal.h:370: error: undefined reference to 'pow'
.build/checkouts/SwiftImGui/Sources/CImGui/./imgui/imgui_internal.h:371: error: undefined reference to 'logf'
.build/checkouts/SwiftImGui/Sources/CImGui/./imgui/imgui_internal.h:372: error: undefined reference to 'log'
.build/checkouts/SwiftImGui/Sources/CImGui/./imgui/imgui_internal.h:397: error: undefined reference to 'sqrtf'
.build/checkouts/SwiftImGui/Sources/CImGui/imgui/imgui.cpp:1839: error: undefined reference to 'fmodf'
.build/checkouts/SwiftImGui/Sources/CImGui/imgui/imgui_demo.cpp:430: error: undefined reference to 'fmodf'
.build/checkouts/SwiftImGui/Sources/CImGui/imgui/imgui_demo.cpp:7342: error: undefined reference to 'fmodf'
.build/checkouts/SwiftImGui/Sources/CImGui/imgui/imgui_demo.cpp:7344: error: undefined reference to 'fmodf'
.build/checkouts/SwiftImGui/Sources/CImGui/imgui/imgui_demo.cpp:6071: error: undefined reference to 'floorf'
.build/checkouts/SwiftImGui/Sources/CImGui/imgui/imgui_demo.cpp:1203: error: undefined reference to 'cosf'
.build/checkouts/SwiftImGui/Sources/CImGui/imgui/imgui_demo.cpp:1203: error: undefined reference to 'sinf'
.build/checkouts/SwiftImGui/Sources/CImGui/imgui/imgui_demo.cpp:1576: error: undefined reference to 'cosf'
.build/checkouts/SwiftImGui/Sources/CImGui/imgui/imgui_demo.cpp:2891: error: undefined reference to 'sinf'
.build/checkouts/SwiftImGui/Sources/CImGui/imgui/imgui_demo.cpp:5781: error: undefined reference to 'sqrtf'
.build/checkouts/SwiftImGui/Sources/CImGui/imgui/imgui_demo.cpp:1600: error: undefined reference to 'sinf'
.build/checkouts/SwiftImGui/Sources/CImGui/imgui/imgui_draw.cpp:375: error: undefined reference to 'cosf'
.build/checkouts/SwiftImGui/Sources/CImGui/imgui/imgui_draw.cpp:375: error: undefined reference to 'sinf'
.build/checkouts/SwiftImGui/Sources/CImGui/imgui/imgui_draw.cpp:377: error: undefined reference to 'cosf'
.build/checkouts/SwiftImGui/Sources/CImGui/imgui/imgui_draw.cpp:390: error: undefined reference to 'acosf'
.build/checkouts/SwiftImGui/Sources/CImGui/imgui/imgui_draw.cpp:390: error: undefined reference to 'ceilf'
.build/checkouts/SwiftImGui/Sources/CImGui/imgui/imgui_draw.cpp:556: error: undefined reference to 'acosf'
.build/checkouts/SwiftImGui/Sources/CImGui/imgui/imgui_draw.cpp:556: error: undefined reference to 'ceilf'
.build/checkouts/SwiftImGui/Sources/CImGui/imgui/imgui_draw.cpp:740: error: undefined reference to 'sqrtf'
.build/checkouts/SwiftImGui/Sources/CImGui/imgui/imgui_draw.cpp:933: error: undefined reference to 'sqrtf'
.build/checkouts/SwiftImGui/Sources/CImGui/imgui/imgui_draw.cpp:1163: error: undefined reference to 'ceilf'
.build/checkouts/SwiftImGui/Sources/CImGui/imgui/imgui_draw.cpp:1184: error: undefined reference to 'ceilf'
.build/checkouts/SwiftImGui/Sources/CImGui/imgui/imgui_draw.cpp:3782: error: undefined reference to 'acosf'
ned reference to 'floorf'
.build/checkouts/SwiftImGui/Sources/CImGui/imgui/imstb_truetype.h:2641: error: undefined reference to 'floorf'
.build/checkouts/SwiftImGui/Sources/CImGui/imgui/imstb_truetype.h:4199: error: undefined reference to 'floorf'
.build/checkouts/SwiftImGui/Sources/CImGui/imgui/imgui_widgets.cpp:5033: error: undefined reference to 'atan2f'
.build/checkouts/SwiftImGui/Sources/CImGui/imgui/imgui_internal.h:369: error: undefined reference to 'powf'
.build/checkouts/SwiftImGui/Sources/CImGui/imgui/imgui_internal.h:371: error: undefined reference to 'logf'
.build/checkouts/SwiftImGui/Sources/CImGui/imgui/imgui_internal.h:372: error: undefined reference to 'log'
.build/checkouts/SwiftImGui/Sources/CImGui/imgui/imgui_internal.h:370: error: undefined reference to 'pow'
clang-10: error: linker command failed with exit code 1 (use -v to see invocation)
[0/1] Linking TestProject
Thank you for reporting this issue. I'm sorry for the late reply, github did not notify me about the new issue. I'm seeing this on the Linux CI as well. Will have a look at it for a fix.
This issue still exists btw, any work arounds? @ctreffs @xiroV
The fix is to add linkerSettings in the package file for linux that link libm (-lm)
https://github.com/ctreffs/SwiftImGui/releases/tag/1.89.5 and https://github.com/ctreffs/SwiftImGui/releases/tag/1.89.5-docking contain the fix