gpt4 book ai didi

build - 使用 raspberry pi 进行测试/部署构建的条件编译

转载 作者:行者123 更新时间:2023-12-03 07:33:32 26 4
gpt4 key购买 nike

我正在为树莓派构建一个应用程序,并使用 pi4j 作为 GPIO 上软件 PWM 的依赖项。不过,我想在本地机器上测试我的代码,所以我想在没有 pi4j 依赖项的情况下编译我的代码,并跳过对库的方法调用。

示例代码:

(ns led-server.model
(:require [clojure.tools.logging :as log])
(:import [com.pi4j.wiringpi SoftPwm Gpio])) ;; pi4j dependency, only compiles on rPi


(defn- soft-pwm-write [pin value]
(let [ival (Math/round (double (* value RANGE)))]
(SoftPwm/softPwmWrite pin ival) ;; call to pi4j. This is what I want to skip
(log/info "pin" pin "set to" ival))
)

pi4j 需要wiringPi C 库,该库仅在树莓派上可用(这是有道理的)。对于在我的开发机器上进行测试,查看日志打印输出就足够了。我不想评论 :import和方法调用测试,我想要一个更优雅的解决方案。

最佳答案

除了条件编译是否是这里最好的方法的问题外,用 leiningen 条件编译文件并不难:将要条件编译的文件放在与 src/clj 不同的文件夹中,并将其定义为源文件夹轮廓:

:profiles {
:native {:source-paths ["src/native/clj/"]}
:mock {:source-paths ["src/mock/clj/"]}

然后,使用配置文件运行 leininig:
lein with-profiles +mock repl

https://github.com/technomancy/leiningen/blob/master/doc/PROFILES.md 上查看更多信息

在您的情况下,您可以定义一个协议(protocol),提供 2 个实现并确保仅加载与您的环境相关的类。

关于build - 使用 raspberry pi 进行测试/部署构建的条件编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31379662/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com