1 Star 0 Fork 0

enjoyic/bacnet-stack

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
CMakeLists.txt 25.06 KB
一键复制 编辑 原始数据 按行查看 历史
Greg Shue 提交于 2021-08-17 06:29 +08:00 . Issue 187 enable skipped ztest suites (#189)
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827
cmake_minimum_required(VERSION 3.7 FATAL_ERROR)
project(
bacnet-stack
VERSION 0.8.6
LANGUAGES C)
#
# options
#
option(
BACNET_STACK_BUILD_APPS
"build apps"
ON)
option(
BAC_ROUTING
"enable bac routing"
ON)
option(
BACNET_PROPERTY_LISTS
"enable property lists"
ON)
option(
BACNET_BUILD_PIFACE_APP
"compile the piface app"
OFF)
option(
BACDL_ETHERNET
"compile with ethernet support"
OFF)
option(
BACDL_MSTP
"compile with mstp support"
OFF)
option(
BACDL_ARCNET
"compile with arcnet support"
OFF)
option(
BACDL_BIP
"compile with ip support"
ON)
option(
BACDL_BIP6
"compile with ipv6 support"
OFF)
option(
BACDL_NONE
"compile without datalink"
OFF)
set(BACNET_PROTOCOL_REVISION 19)
#
# library
#
find_package(Threads)
add_library(${PROJECT_NAME}
src/bacnet/abort.c
src/bacnet/abort.h
src/bacnet/access_rule.c
src/bacnet/access_rule.h
src/bacnet/alarm_ack.c
src/bacnet/alarm_ack.h
src/bacnet/apdu.h
src/bacnet/arf.c
src/bacnet/arf.h
src/bacnet/assigned_access_rights.c
src/bacnet/assigned_access_rights.h
src/bacnet/authentication_factor.c
src/bacnet/authentication_factor_format.c
src/bacnet/authentication_factor_format.h
src/bacnet/authentication_factor.h
src/bacnet/awf.c
src/bacnet/awf.h
src/bacnet/bacaddr.c
src/bacnet/bacaddr.h
src/bacnet/bacapp.c
src/bacnet/bacapp.h
src/bacnet/bacdcode.c
src/bacnet/bacdcode.h
src/bacnet/bacdef.h
src/bacnet/bacdevobjpropref.c
src/bacnet/bacdevobjpropref.h
src/bacnet/bacenum.h
src/bacnet/bacerror.c
src/bacnet/bacerror.h
src/bacnet/bacint.c
src/bacnet/bacint.h
src/bacnet/bacprop.c
src/bacnet/bacprop.h
src/bacnet/bacpropstates.c
src/bacnet/bacpropstates.h
src/bacnet/bacreal.c
src/bacnet/bacreal.h
src/bacnet/bacstr.c
src/bacnet/bacstr.h
src/bacnet/bactext.c
src/bacnet/bactext.h
src/bacnet/bactimevalue.c
src/bacnet/bactimevalue.h
$<$<BOOL:${BACDL_BIP}>:src/bacnet/basic/bbmd/h_bbmd.c>
$<$<BOOL:${BACDL_BIP}>:src/bacnet/basic/bbmd/h_bbmd.h>
$<$<BOOL:${BACDL_BIP6}>:src/bacnet/basic/bbmd6/h_bbmd6.c>
$<$<BOOL:${BACDL_BIP6}>:src/bacnet/basic/bbmd6/h_bbmd6.h>
$<$<BOOL:${BACDL_BIP6}>:src/bacnet/basic/bbmd6/vmac.c>
$<$<BOOL:${BACDL_BIP6}>:src/bacnet/basic/bbmd6/vmac.h>
src/bacnet/basic/binding/address.c
src/bacnet/basic/binding/address.h
src/bacnet/basic/npdu/h_npdu.c
src/bacnet/basic/npdu/h_npdu.h
src/bacnet/basic/npdu/h_routed_npdu.c
src/bacnet/basic/npdu/h_routed_npdu.h
src/bacnet/basic/npdu/s_router.c
src/bacnet/basic/npdu/s_router.h
src/bacnet/basic/object/access_credential.c
src/bacnet/basic/object/access_credential.h
src/bacnet/basic/object/access_door.c
src/bacnet/basic/object/access_door.h
src/bacnet/basic/object/access_point.c
src/bacnet/basic/object/access_point.h
src/bacnet/basic/object/access_rights.c
src/bacnet/basic/object/access_rights.h
src/bacnet/basic/object/access_user.c
src/bacnet/basic/object/access_user.h
src/bacnet/basic/object/access_zone.c
src/bacnet/basic/object/access_zone.h
src/bacnet/basic/object/acc.c
src/bacnet/basic/object/ai.c
src/bacnet/basic/object/ai.h
src/bacnet/basic/object/ao.c
src/bacnet/basic/object/ao.h
src/bacnet/basic/object/av.c
src/bacnet/basic/object/av.h
src/bacnet/basic/object/bacfile.c
src/bacnet/basic/object/bacfile.h
src/bacnet/basic/object/bi.c
src/bacnet/basic/object/bi.h
src/bacnet/basic/object/bo.c
src/bacnet/basic/object/bo.h
src/bacnet/basic/object/bv.c
src/bacnet/basic/object/bv.h
src/bacnet/basic/object/channel.c
src/bacnet/basic/object/channel.h
# src/bacnet/basic/object/client/device-client.c
src/bacnet/basic/object/command.c
src/bacnet/basic/object/command.h
src/bacnet/basic/object/credential_data_input.c
src/bacnet/basic/object/credential_data_input.h
src/bacnet/basic/object/csv.c
src/bacnet/basic/object/csv.h
src/bacnet/basic/object/device.c
src/bacnet/basic/object/device.h
$<$<BOOL:${BAC_ROUTING}>:src/bacnet/basic/object/gateway/gw_device.c>
src/bacnet/basic/object/iv.c
src/bacnet/basic/object/iv.h
src/bacnet/basic/object/lc.c
src/bacnet/basic/object/lc.h
src/bacnet/basic/object/lo.c
src/bacnet/basic/object/lo.h
src/bacnet/basic/object/lsp.c
src/bacnet/basic/object/lsp.h
src/bacnet/basic/object/ms-input.c
src/bacnet/basic/object/ms-input.h
src/bacnet/basic/object/mso.c
src/bacnet/basic/object/mso.h
src/bacnet/basic/object/msv.c
src/bacnet/basic/object/msv.h
src/bacnet/basic/object/nc.c
src/bacnet/basic/object/nc.h
src/bacnet/basic/object/netport.c
src/bacnet/basic/object/netport.h
src/bacnet/basic/object/objects.c
src/bacnet/basic/object/objects.h
src/bacnet/basic/object/osv.c
src/bacnet/basic/object/osv.h
src/bacnet/basic/object/piv.c
src/bacnet/basic/object/piv.h
src/bacnet/basic/object/schedule.c
src/bacnet/basic/object/schedule.h
src/bacnet/basic/object/trendlog.c
src/bacnet/basic/object/trendlog.h
src/bacnet/basic/service/h_alarm_ack.c
src/bacnet/basic/service/h_alarm_ack.h
src/bacnet/basic/service/h_apdu.c
src/bacnet/basic/service/h_apdu.h
src/bacnet/basic/service/h_arf_a.c
src/bacnet/basic/service/h_arf_a.h
src/bacnet/basic/service/h_arf.c
src/bacnet/basic/service/h_arf.h
src/bacnet/basic/service/h_awf.c
src/bacnet/basic/service/h_awf.h
src/bacnet/basic/service/h_ccov.c
src/bacnet/basic/service/h_ccov.h
src/bacnet/basic/service/h_cov.c
src/bacnet/basic/service/h_cov.h
src/bacnet/basic/service/h_dcc.c
src/bacnet/basic/service/h_dcc.h
src/bacnet/basic/service/h_gas_a.c
src/bacnet/basic/service/h_gas_a.h
src/bacnet/basic/service/h_get_alarm_sum.c
src/bacnet/basic/service/h_get_alarm_sum.h
src/bacnet/basic/service/h_getevent_a.c
src/bacnet/basic/service/h_getevent_a.h
src/bacnet/basic/service/h_getevent.c
src/bacnet/basic/service/h_getevent.h
src/bacnet/basic/service/h_iam.c
src/bacnet/basic/service/h_iam.h
src/bacnet/basic/service/h_ihave.c
src/bacnet/basic/service/h_ihave.h
src/bacnet/basic/service/h_lso.c
src/bacnet/basic/service/h_lso.h
src/bacnet/basic/service/h_noserv.c
src/bacnet/basic/service/h_noserv.h
src/bacnet/basic/service/h_rd.c
src/bacnet/basic/service/h_rd.h
src/bacnet/basic/service/h_rp_a.c
src/bacnet/basic/service/h_rp_a.h
src/bacnet/basic/service/h_rp.c
src/bacnet/basic/service/h_rp.h
src/bacnet/basic/service/h_rpm_a.c
src/bacnet/basic/service/h_rpm_a.h
src/bacnet/basic/service/h_rpm.c
src/bacnet/basic/service/h_rpm.h
src/bacnet/basic/service/h_rr_a.c
src/bacnet/basic/service/h_rr_a.h
src/bacnet/basic/service/h_rr.c
src/bacnet/basic/service/h_rr.h
src/bacnet/basic/service/h_ts.c
src/bacnet/basic/service/h_ts.h
src/bacnet/basic/service/h_ucov.c
src/bacnet/basic/service/h_ucov.h
src/bacnet/basic/service/h_upt.c
src/bacnet/basic/service/h_upt.h
src/bacnet/basic/service/h_whohas.c
src/bacnet/basic/service/h_whohas.h
src/bacnet/basic/service/h_whois.c
src/bacnet/basic/service/h_whois.h
src/bacnet/basic/service/h_wp.c
src/bacnet/basic/service/h_wp.h
src/bacnet/basic/service/h_wpm.c
src/bacnet/basic/service/h_wpm.h
src/bacnet/basic/service/s_abort.c
src/bacnet/basic/service/s_abort.h
src/bacnet/basic/service/s_ack_alarm.c
src/bacnet/basic/service/s_ack_alarm.h
src/bacnet/basic/service/s_arfs.c
src/bacnet/basic/service/s_arfs.h
src/bacnet/basic/service/s_awfs.c
src/bacnet/basic/service/s_awfs.h
src/bacnet/basic/service/s_cevent.c
src/bacnet/basic/service/s_cevent.h
src/bacnet/basic/service/s_cov.c
src/bacnet/basic/service/s_cov.h
src/bacnet/basic/service/s_dcc.c
src/bacnet/basic/service/s_dcc.h
src/bacnet/basic/service/s_error.c
src/bacnet/basic/service/s_error.h
src/bacnet/basic/service/s_get_alarm_sum.c
src/bacnet/basic/service/s_get_alarm_sum.h
src/bacnet/basic/service/s_get_event.c
src/bacnet/basic/service/s_getevent.c
src/bacnet/basic/service/s_get_event.h
src/bacnet/basic/service/s_getevent.h
src/bacnet/basic/service/s_iam.c
src/bacnet/basic/service/s_iam.h
src/bacnet/basic/service/s_ihave.c
src/bacnet/basic/service/s_ihave.h
src/bacnet/basic/service/s_lso.c
src/bacnet/basic/service/s_lso.h
src/bacnet/basic/service/s_rd.c
src/bacnet/basic/service/s_rd.h
src/bacnet/basic/service/s_readrange.c
src/bacnet/basic/service/s_readrange.h
src/bacnet/basic/service/s_rp.c
src/bacnet/basic/service/s_rp.h
src/bacnet/basic/service/s_rpm.c
src/bacnet/basic/service/s_rpm.h
src/bacnet/basic/service/s_ts.c
src/bacnet/basic/service/s_ts.h
src/bacnet/basic/service/s_uevent.c
src/bacnet/basic/service/s_uevent.h
src/bacnet/basic/service/s_upt.c
src/bacnet/basic/service/s_upt.h
src/bacnet/basic/service/s_whohas.c
src/bacnet/basic/service/s_whohas.h
src/bacnet/basic/service/s_whois.c
src/bacnet/basic/service/s_whois.h
src/bacnet/basic/service/s_wp.c
src/bacnet/basic/service/s_wp.h
src/bacnet/basic/service/s_wpm.c
src/bacnet/basic/service/s_wpm.h
src/bacnet/basic/services.h
src/bacnet/basic/sys/bigend.c
src/bacnet/basic/sys/bigend.h
src/bacnet/basic/sys/days.c
src/bacnet/basic/sys/days.h
src/bacnet/basic/sys/debug.c
src/bacnet/basic/sys/debug.h
src/bacnet/basic/sys/fifo.c
src/bacnet/basic/sys/fifo.h
src/bacnet/basic/sys/filename.c
src/bacnet/basic/sys/filename.h
src/bacnet/basic/sys/key.c
src/bacnet/basic/sys/key.h
src/bacnet/basic/sys/keylist.c
src/bacnet/basic/sys/keylist.h
src/bacnet/basic/sys/mstimer.c
src/bacnet/basic/sys/mstimer.h
src/bacnet/basic/sys/ringbuf.c
src/bacnet/basic/sys/ringbuf.h
src/bacnet/basic/sys/sbuf.c
src/bacnet/basic/sys/sbuf.h
src/bacnet/basic/tsm/tsm.c
src/bacnet/basic/tsm/tsm.h
src/bacnet/bits.h
src/bacnet/bytes.h
src/bacnet/config.h
src/bacnet/cov.c
src/bacnet/cov.h
src/bacnet/credential_authentication_factor.c
src/bacnet/credential_authentication_factor.h
src/bacnet/datalink/arcnet.h
src/bacnet/datalink/bacsec.c
src/bacnet/datalink/bacsec.h
src/bacnet/datalink/bip6.h
$<$<BOOL:${BACDL_BIP}>:src/bacnet/datalink/bip.h>
$<$<BOOL:${BACDL_BIP6}>:src/bacnet/datalink/bvlc6.c>
$<$<BOOL:${BACDL_BIP6}>:src/bacnet/datalink/bvlc6.h>
$<$<BOOL:${BACDL_BIP}>:src/bacnet/datalink/bvlc.h>
$<$<BOOL:${BACDL_BIP}>:src/bacnet/datalink/bvlc.c>
$<$<BOOL:${BACDL_MSTP}>:src/bacnet/datalink/crc.h>
$<$<BOOL:${BACDL_MSTP}>:src/bacnet/datalink/crc.c>
$<$<BOOL:${BACDL_MSTP}>:src/bacnet/datalink/cobs.c>
src/bacnet/datalink/datalink.c
src/bacnet/datalink/datalink.h
src/bacnet/datalink/dlenv.c
src/bacnet/datalink/dlenv.h
src/bacnet/datalink/dlmstp.h
src/bacnet/datalink/ethernet.h
$<$<BOOL:${BACDL_MSTP}>:src/bacnet/datalink/mstp.c>
src/bacnet/datalink/mstpdef.h
src/bacnet/datalink/mstp.h
src/bacnet/datalink/mstptext.c
src/bacnet/datalink/mstptext.h
src/bacnet/datetime.c
src/bacnet/datetime.h
src/bacnet/dcc.c
src/bacnet/dcc.h
src/bacnet/event.c
src/bacnet/event.h
src/bacnet/get_alarm_sum.c
src/bacnet/get_alarm_sum.h
src/bacnet/getevent.c
src/bacnet/getevent.h
src/bacnet/iam.c
src/bacnet/iam.h
src/bacnet/ihave.c
src/bacnet/ihave.h
src/bacnet/indtext.c
src/bacnet/indtext.h
src/bacnet/lighting.c
src/bacnet/lighting.h
src/bacnet/lso.c
src/bacnet/lso.h
src/bacnet/memcopy.c
src/bacnet/memcopy.h
src/bacnet/npdu.c
src/bacnet/npdu.h
src/bacnet/property.c
src/bacnet/property.h
src/bacnet/proplist.c
src/bacnet/proplist.h
src/bacnet/ptransfer.c
src/bacnet/ptransfer.h
src/bacnet/rd.c
src/bacnet/rd.h
src/bacnet/readrange.c
src/bacnet/readrange.h
src/bacnet/reject.c
src/bacnet/reject.h
src/bacnet/rp.c
src/bacnet/rp.h
src/bacnet/rpm.c
src/bacnet/rpm.h
src/bacnet/timestamp.c
src/bacnet/timestamp.h
src/bacnet/timesync.c
src/bacnet/timesync.h
src/bacnet/version.h
src/bacnet/whohas.c
src/bacnet/whohas.h
src/bacnet/whois.c
src/bacnet/whois.h
src/bacnet/wp.c
src/bacnet/wp.h
src/bacnet/wpm.c
src/bacnet/wpm.h)
target_sources(
${PROJECT_NAME}
PRIVATE
${BACNETSTACK_SRCS})
target_include_directories(
${PROJECT_NAME}
PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/src/>
$<INSTALL_INTERFACE:include/bacnet/>)
if(BUILD_SHARED_LIBS)
set_target_properties(
${PROJECT_NAME}
PROPERTIES
C_VISIBILITY_PRESET hidden)
endif()
target_compile_definitions(
${PROJECT_NAME}
PUBLIC
BACNET_PROTOCOL_REVISION=${BACNET_PROTOCOL_REVISION}
$<$<BOOL:${BACDL_BIP}>:BACDL_BIP>
$<$<BOOL:${BACDL_BIP6}>:BACDL_BIP6>
$<$<BOOL:${BACDL_ARCNET}>:BACDL_ARCNET>
$<$<BOOL:${BACDL_MSTP}>:BACDL_MSTP>
$<$<BOOL:${BACDL_ETHERNET}>:BACDL_ETHERNET>
$<$<BOOL:${BACDL_NONE}>:BACDL_NONE>
$<$<BOOL:${BACNET_PROPERTY_LISTS}>:BACNET_PROPERTY_LISTS>
$<$<BOOL:${BAC_ROUTING}>:BAC_ROUTING>
$<$<NOT:$<BOOL:${BUILD_SHARED_LIBS}>>:BACNET_STACK_STATIC_DEFINE>
PRIVATE
PRINT_ENABLED=1)
target_link_libraries(${PROJECT_NAME} PUBLIC Threads::Threads)
add_library(
${PROJECT_NAME}::${PROJECT_NAME}
ALIAS
${PROJECT_NAME})
#
# add tests
#
list(APPEND testdirs
test/bacnet/abort
test/bacnet/alarm_ack
test/bacnet/arf
test/bacnet/awf
test/bacnet/bacapp
test/bacnet/bacdcode
test/bacnet/bacdevobjpropref
test/bacnet/bacerror
test/bacnet/bacint
test/bacnet/bacpropstates
test/bacnet/bacreal
test/bacnet/bacstr
test/bacnet/cov
test/bacnet/datetime
test/bacnet/dcc
test/bacnet/event
test/bacnet/getevent
test/bacnet/iam
test/bacnet/ihave
test/bacnet/indtext
test/bacnet/lighting
test/bacnet/lso
test/bacnet/memcopy
test/bacnet/npdu
test/bacnet/property
test/bacnet/ptransfer
test/bacnet/rd
test/bacnet/reject
test/bacnet/rp
test/bacnet/rpm
test/bacnet/timestamp
test/bacnet/timesync
test/bacnet/whohas
test/bacnet/whois
test/bacnet/wp
)
# bacnet/basic/*
list(APPEND testdirs
# basic/object/binding
test/bacnet/basic/binding/address
# basic/object
test/bacnet/basic/object/acc
test/bacnet/basic/object/access_credential
test/bacnet/basic/object/access_door
test/bacnet/basic/object/access_point
test/bacnet/basic/object/access_rights
test/bacnet/basic/object/access_user
test/bacnet/basic/object/access_zone
test/bacnet/basic/object/ai
test/bacnet/basic/object/ao
test/bacnet/basic/object/av
test/bacnet/basic/object/bi
test/bacnet/basic/object/bo
test/bacnet/basic/object/bv
test/bacnet/basic/object/command
test/bacnet/basic/object/credential_data_input
test/bacnet/basic/object/device
#test/bacnet/basic/object/lc #Tests skipped, redesign to use only API
test/bacnet/basic/object/lo
test/bacnet/basic/object/lsp
test/bacnet/basic/object/ms-input
test/bacnet/basic/object/mso
test/bacnet/basic/object/msv
test/bacnet/basic/object/netport
test/bacnet/basic/object/objects
test/bacnet/basic/object/osv
test/bacnet/basic/object/piv
test/bacnet/basic/object/schedule
# basic/sys
test/bacnet/basic/sys/days
test/bacnet/basic/sys/fifo
test/bacnet/basic/sys/filename
test/bacnet/basic/sys/key
test/bacnet/basic/sys/keylist
test/bacnet/basic/sys/ringbuf
test/bacnet/basic/sys/sbuf
)
# bacnet/datalink/*
list(APPEND testdirs
test/bacnet/datalink/cobs
test/bacnet/datalink/crc
test/bacnet/datalink/bvlc
)
enable_testing()
foreach(testdir IN ITEMS ${testdirs})
get_filename_component(basename ${testdir} NAME)
add_subdirectory(${testdir})
add_test(build_${basename}
"${CMAKE_COMMAND}"
--build "${CMAKE_BINARY_DIR}"
--config "$<CONFIG>"
--target test_${basename}
)
add_test(test_${basename} ${testdir}/test_${basename})
set_tests_properties(test_${basename} PROPERTIES FIXTURES_REQUIRED test_fixture)
set_tests_properties(build_${basename} PROPERTIES FIXTURES_SETUP test_fixture)
endforeach()
#
# add ports
#
set(BACNET_PORT_DIRECTORY_PATH "")
if(ZEPHYR_BASE)
message(FATAL_ERROR "ZEPHYR_BASE env variable defined. Use zephyr/CMakeLists.txt for Zephyr build")
elseif(${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
message(STATUS "BACNET: building for linux")
set(BACNET_PORT_DIRECTORY_PATH ${CMAKE_CURRENT_LIST_DIR}/ports/linux)
target_sources(${PROJECT_NAME} PRIVATE
ports/linux/bacport.h
ports/linux/datetime-init.c
$<$<BOOL:${BACDL_BIP}>:ports/linux/bip-init.c>
$<$<BOOL:${BACDL_BIP6}>:ports/linux/bip6.c>
$<$<BOOL:${BACDL_ARCNET}>:ports/linux/arcnet.c>
$<$<BOOL:${BACDL_MSTP}>:ports/linux/rs485.c>
$<$<BOOL:${BACDL_MSTP}>:ports/linux/rs485.h>
$<$<BOOL:${BACDL_MSTP}>:ports/linux/dlmstp.c>
$<$<BOOL:${BACDL_MSTP}>:ports/linux/dlmstp_linux.c>
$<$<BOOL:${BACDL_MSTP}>:ports/linux/dlmstp_linux.h>
# ports/linux/rx_fsm.c
$<$<BOOL:${BACDL_ETHERNET}>:ports/linux/ethernet.c>
ports/linux/mstimer-init.c)
elseif(WIN32)
message(STATUS "BACNET: building for win32")
set(BACNET_PORT_DIRECTORY_PATH ${CMAKE_CURRENT_LIST_DIR}/ports/win32)
target_link_libraries(${PROJECT_NAME} PUBLIC wsock32)
target_link_libraries(${PROJECT_NAME} PRIVATE
winmm
$<$<BOOL:${BACDL_BIP}>:ws2_32>
$<$<BOOL:${BACDL_BIP}>:iphlpapi>)
target_sources(${PROJECT_NAME} PRIVATE
ports/win32/bacport.h
$<$<BOOL:${BACDL_BIP6}>:ports/win32/bip6.c>
$<$<BOOL:${BACDL_BIP}>:ports/win32/bip-init.c>
# ports/win32/rx_fsm.c
ports/win32/datetime-init.c
$<$<BOOL:${BACDL_MSTP}>:ports/win32/dlmstp.c>
# ports/win32/dlmstp-mm.c
$<$<BOOL:${BACDL_ETHERNET}>:ports/win32/ethernet.c>
ports/win32/mstimer-init.c
$<$<BOOL:${BACDL_MSTP}>:ports/win32/rs485.c>
$<$<BOOL:${BACDL_MSTP}>:ports/win32/rs485.h>)
elseif(APPLE)
message(STATUS "BACNET: building for APPLE")
set(BACNET_PORT_DIRECTORY_PATH ${CMAKE_CURRENT_LIST_DIR}/ports/bsd)
target_sources(${PROJECT_NAME} PRIVATE
ports/bsd/bacport.h
ports/bsd/bip-init.c
ports/bsd/datetime-init.c
ports/bsd/mstimer-init.c
ports/bsd/stdbool.h)
endif()
target_include_directories(${PROJECT_NAME} PUBLIC
$<BUILD_INTERFACE:${BACNET_PORT_DIRECTORY_PATH}>)
#
# examples
#
if(BACNET_STACK_BUILD_APPS)
message(STATUS "BACNET: compiling also apps")
add_executable(abort apps/abort/main.c)
target_link_libraries(abort PRIVATE ${PROJECT_NAME})
add_executable(ack-alarm apps/ack-alarm/main.c)
target_link_libraries(ack-alarm PRIVATE ${PROJECT_NAME})
add_executable(dcc apps/dcc/main.c)
target_link_libraries(dcc PRIVATE ${PROJECT_NAME})
add_executable(epics apps/epics/main.c)
target_link_libraries(epics PRIVATE ${PROJECT_NAME})
add_executable(error apps/error/main.c)
target_link_libraries(error PRIVATE ${PROJECT_NAME})
# add_executable(gateway apps/gateway/main.c apps/gateway/gateway.h)
# target_link_libraries(gateway PRIVATE ${PROJECT_NAME})
add_executable(getevent apps/getevent/main.c)
target_link_libraries(getevent PRIVATE ${PROJECT_NAME})
add_executable(iam apps/iam/main.c)
target_link_libraries(iam PRIVATE ${PROJECT_NAME})
add_executable(iamrouter apps/iamrouter/main.c)
target_link_libraries(iamrouter PRIVATE ${PROJECT_NAME})
add_executable(initrouter apps/initrouter/main.c)
target_link_libraries(initrouter PRIVATE ${PROJECT_NAME})
if(BACDL_MSTP)
add_executable(mstpcap apps/mstpcap/main.c)
target_link_libraries(mstpcap PRIVATE ${PROJECT_NAME})
add_executable(mstpcrc apps/mstpcrc/main.c)
target_link_libraries(mstpcrc PRIVATE ${PROJECT_NAME})
endif()
if(BACNET_BUILD_PIFACE_APP)
add_executable(piface apps/piface/main.c apps/piface/device.c)
target_link_libraries(piface PRIVATE ${PROJECT_NAME})
endif(BACNET_BUILD_PIFACE_APP)
# add_executable(
# ptransfer
# apps/ptransfer/main.c
# apps/ptransfer/h_pt_a.h
# apps/ptransfer/h_pt_a.c
# apps/ptransfer/h_pt.h
# apps/ptransfer/h_pt.c
# apps/ptransfer/s_ptransfer.h
# apps/ptransfer/s_ptransfer.c)
# target_link_libraries(ptransfer PRIVATE ${PROJECT_NAME})
if(NOT BACDL_ETHERNET)
add_executable(readbdt apps/readbdt/main.c)
target_link_libraries(readbdt PRIVATE ${PROJECT_NAME})
add_executable(readfdt apps/readfdt/main.c)
target_link_libraries(readfdt PRIVATE ${PROJECT_NAME})
endif()
add_executable(readfile apps/readfile/main.c)
target_link_libraries(readfile PRIVATE ${PROJECT_NAME})
add_executable(readprop apps/readprop/main.c)
target_link_libraries(readprop PRIVATE ${PROJECT_NAME})
add_executable(readpropm apps/readpropm/main.c)
target_link_libraries(readpropm PRIVATE ${PROJECT_NAME})
add_executable(readrange apps/readrange/main.c)
target_link_libraries(readrange PRIVATE ${PROJECT_NAME})
add_executable(reinit apps/reinit/main.c)
target_link_libraries(reinit PRIVATE ${PROJECT_NAME})
if(BACDL_MSTP)
add_executable(
router
apps/router/ipmodule.c
apps/router/ipmodule.h
apps/router/main.c
apps/router/msgqueue.c
apps/router/msgqueue.h
apps/router/mstpmodule.c
apps/router/mstpmodule.h
apps/router/network_layer.c
apps/router/network_layer.h
apps/router/portthread.c
apps/router/portthread.h)
target_link_libraries(
router
PRIVATE ${PROJECT_NAME}
# needs libconfig
-lconfig)
endif()
if(BACDL_BIP6)
add_executable(router-ipv6 apps/router-ipv6/main.c)
target_link_libraries(router-ipv6 PRIVATE ${PROJECT_NAME})
endif()
add_executable(scov apps/scov/main.c)
target_link_libraries(scov PRIVATE ${PROJECT_NAME})
add_executable(server apps/server/main.c)
target_link_libraries(server PRIVATE ${PROJECT_NAME})
add_executable(timesync apps/timesync/main.c)
target_link_libraries(timesync PRIVATE ${PROJECT_NAME})
add_executable(ucov apps/ucov/main.c)
target_link_libraries(ucov PRIVATE ${PROJECT_NAME})
add_executable(event apps/event/main.c)
target_link_libraries(event PRIVATE ${PROJECT_NAME})
add_executable(uevent apps/uevent/main.c)
target_link_libraries(uevent PRIVATE ${PROJECT_NAME})
add_executable(uptransfer apps/uptransfer/main.c)
target_link_libraries(uptransfer PRIVATE ${PROJECT_NAME})
add_executable(whohas apps/whohas/main.c)
target_link_libraries(whohas PRIVATE ${PROJECT_NAME})
add_executable(whois apps/whois/main.c)
target_link_libraries(whois PRIVATE ${PROJECT_NAME})
add_executable(whoisrouter apps/whoisrouter/main.c)
target_link_libraries(whoisrouter PRIVATE ${PROJECT_NAME})
add_executable(writefile apps/writefile/main.c)
target_link_libraries(writefile PRIVATE ${PROJECT_NAME})
add_executable(writeprop apps/writeprop/main.c)
target_link_libraries(writeprop PRIVATE ${PROJECT_NAME})
add_executable(writepropm apps/writepropm/main.c)
target_link_libraries(writepropm PRIVATE ${PROJECT_NAME})
endif()
#
# install
#
include(GNUInstallDirs)
include(CMakePackageConfigHelpers)
set(BACNET_STACK_CONFIG_INSTALL_DIR ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME})
install(
TARGETS ${PROJECT_NAME}
EXPORT ${PROJECT_NAME}Targets
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT lib
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT lib)
install(
EXPORT ${PROJECT_NAME}Targets
DESTINATION ${BACNET_STACK_CONFIG_INSTALL_DIR}
NAMESPACE ${PROJECT_NAME}::
COMPONENT dev)
configure_package_config_file(
cmake/Config.cmake.in
${PROJECT_NAME}Config.cmake
INSTALL_DESTINATION
${BACNET_STACK_CONFIG_INSTALL_DIR})
write_basic_package_version_file(${PROJECT_NAME}ConfigVersion.cmake COMPATIBILITY SameMajorVersion)
install(
FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake
${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake
DESTINATION ${BACNET_STACK_CONFIG_INSTALL_DIR}
COMPONENT dev)
install(
DIRECTORY src/bacnet
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
COMPONENT dev
FILES_MATCHING
PATTERN "*.h")
install(
DIRECTORY ${BACNET_PORT_DIRECTORY_PATH}/
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
COMPONENT dev
FILES_MATCHING
PATTERN "*.h")
message(STATUS "BACNET: using cmake:....................\"${CMAKE_VERSION}\"")
message(STATUS "BACNET: CMAKE_C_COMPILER_ID:............\"${CMAKE_C_COMPILER_ID}\"")
message(STATUS "BACNET: CMAKE_C_COMPILER_VERSION:.......\"${CMAKE_C_COMPILER_VERSION}\"")
message(STATUS "BACNET: CMAKE_CXX_COMPILER_ID:..........\"${CMAKE_CXX_COMPILER_ID}\"")
message(STATUS "BACNET: CMAKE_CXX_COMPILER_VERSION:.....\"${CMAKE_CXX_COMPILER_VERSION}\"")
message(STATUS "BACNET: CMAKE_INSTALL_PREFIX:...........\"${CMAKE_INSTALL_PREFIX}\"")
message(STATUS "BACNET: BACNET_PROTOCOL_REVISION:.......\"${BACNET_PROTOCOL_REVISION}\"")
message(STATUS "BACNET: BACDL_BIP6:.....................\"${BACDL_BIP6}\"")
message(STATUS "BACNET: BACDL_BIP:......................\"${BACDL_BIP}\"")
message(STATUS "BACNET: BACDL_ARCNET:...................\"${BACDL_ARCNET}\"")
message(STATUS "BACNET: BACDL_MSTP:.....................\"${BACDL_MSTP}\"")
message(STATUS "BACNET: BACDL_ETHERNET:.................\"${BACDL_ETHERNET}\"")
message(STATUS "BACNET: BACDL_NONE:.....................\"${BACDL_NONE}\"")
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/enjoyic/bacnet-stack.git
git@gitee.com:enjoyic/bacnet-stack.git
enjoyic
bacnet-stack
bacnet-stack
master

搜索帮助