在執行make cfg 后,在kamailio/src目錄下有一個文件modules.lst,內容如下:
# this file is autogenerated by make modules-cfg# the list of sub-directories with modules
modules_dirs:=modules# the list of module groups to compile
cfg_group_include=# the list of extra modules to compile
include_modules= # the list of static modules
static_modules= # the list of modules to skip from compile list
skip_modules= # the list of modules to exclude from compile list
exclude_modules= acc_json acc_radius app_java app_lua app_perl app_python app_python3 app_python3s app_ruby app_ruby_proc auth_ephemeral auth_radius cdp cdp_avp cnxcc cplc crypto db2_ldap db_berkeley db_cassandra db_mongodb db_mysql db_oracle db_perlvdb db_postgres db_redis db_sqlite db_unixodbc dialplan dnssec erlang evapi gcrypt geoip geoip2 gzcompress h350 http_async_client http_client ims_auth ims_charging ims_dialog ims_diameter_server ims_icscf ims_ipsec_pcscf ims_isc ims_ocs ims_qos ims_qos_npn ims_registrar_pcscf ims_registrar_scscf ims_usrloc_pcscf ims_usrloc_scscf jansson janssonrpcc json jsonrpcc jwt kafka kazoo lcr ldap log_systemd lost lwsc memcached microhttpd misc_radius mqtt nats ndb_cassandra ndb_mongodb ndb_redis nghttp2 nsq outbound peering phonenum presence presence_conference presence_dfks presence_dialoginfo presence_mwi presence_profile presence_reginfo presence_xml pua pua_bla pua_dialoginfo pua_json pua_reginfo pua_rpc pua_usrloc pua_xmpp rabbitmq regex rls rtp_media_server ruxc sctp secsipid secsipid_proc slack snmpstats stirshaken systemdops tls tls_wolfssl tlsa topos_redis utils uuid websocket xcap_client xcap_server xhttp_pi xmlops xmlrpc xmpp $(skip_modules)modules_all= $(filter-out modules/CVS modules/CMakeLists.txt, $(wildcard modules/*))
modules_noinc= $(filter-out $(addprefix modules/, $(exclude_modules) $(static_modules)), $(modules_all))
modules= $(filter-out $(modules_noinc), $(addprefix modules/, $(include_modules) )) $(modules_noinc)
modules_configured:=1
這段代碼是一個Makefile片段,用于配置和選擇要編譯的模塊。它定義了一些變量和規則,用于控制哪些模塊應該被編譯,哪些模塊應該被排除。以下是對代碼的詳細解釋:
1. 模塊目錄
modules_dirs:=modules
modules_dirs
變量指定了包含模塊的子目錄。這里只有一個目錄modules
。
2. 模塊組
cfg_group_include=
cfg_group_include
變量用于指定要編譯的模塊組。這里為空,表示沒有特定的模塊組被包含。
3. 額外模塊
include_modules=
include_modules
變量用于指定額外的模塊,這些模塊將被包含在編譯列表中。這里為空,表示沒有額外的模塊被包含。
4. 靜態模塊
static_modules=
static_modules
變量用于指定靜態模塊。靜態模塊通常是必須包含的模塊。這里為空,表示沒有靜態模塊。
5. 跳過模塊
skip_modules=
skip_modules
變量用于指定要跳過的模塊。這些模塊將不會被編譯。這里為空,表示沒有模塊被跳過。
6. 排除模塊
exclude_modules= acc_json acc_radius app_java app_lua app_perl app_python app_python3 app_python3s app_ruby app_ruby_proc auth_ephemeral auth_radius cdp cdp_avp cnxcc cplc crypto db2_ldap db_berkeley db_cassandra db_mongodb db_mysql db_oracle db_perlvdb db_postgres db_redis db_sqlite db_unixodbc dialplan dnssec erlang evapi gcrypt geoip geoip2 gzcompress h350 http_async_client http_client ims_auth ims_charging ims_dialog ims_diameter_server ims_icscf ims_ipsec_pcscf ims_isc ims_ocs ims_qos ims_qos_npn ims_registrar_pcscf ims_registrar_scscf ims_usrloc_pcscf ims_usrloc_scscf jansson janssonrpcc json jsonrpcc jwt kafka kazoo lcr ldap log_systemd lost lwsc memcached microhttpd misc_radius mqtt nats ndb_cassandra ndb_mongodb ndb_redis nghttp2 nsq outbound peering phonenum presence presence_conference presence_dfks presence_dialoginfo presence_mwi presence_profile presence_reginfo presence_xml pua pua_bla pua_dialoginfo pua_json pua_reginfo pua_rpc pua_usrloc pua_xmpp rabbitmq regex rls rtp_media_server ruxc sctp secsipid secsipid_proc slack snmpstats stirshaken systemdops tls tls_wolfssl tlsa topos_redis utils uuid websocket xcap_client xcap_server xhttp_pi xmlops xmlrpc xmpp $(skip_modules)
exclude_modules
變量列出了所有要排除的模塊。這些模塊將不會被編譯。列表中包含了許多模塊名稱,并且還包含了$(skip_modules)
,這意味著skip_modules
中的模塊也會被排除。
7. 所有模塊
modules_all= $(filter-out modules/CVS modules/CMakeLists.txt, $(wildcard modules/*))
modules_all
變量列出了modules
目錄下的所有模塊,但排除了CVS
和CMakeLists.txt
文件。
8. 不包含的模塊
modules_noinc= $(filter-out $(addprefix modules/, $(exclude_modules) $(static_modules)), $(modules_all))
modules_noinc
變量列出了所有不被包含的模塊。它從modules_all
中排除了exclude_modules
和static_modules
中指定的模塊。
9. 最終模塊列表
modules= $(filter-out $(modules_noinc), $(addprefix modules/, $(include_modules) )) $(modules_noinc)
modules
變量是最終的模塊列表。它包含了include_modules
中指定的模塊,并且排除了modules_noinc
中的模塊。
10. 配置標志
modules_configured:=1
modules_configured
變量被設置為1
,表示模塊配置已經完成。
總結
這段代碼的主要目的是根據配置變量(如 include_modules
、exclude_modules
、static_modules
等)來生成最終的模塊列表 modules
,以便在編譯時只編譯需要的模塊。通過這種方式,可以靈活地控制哪些模塊被包含在編譯過程中,哪些模塊被排除。
如果要編譯所有模塊,進行如下操作
如果你想要編譯所有模塊,可以按照以下步驟操作:
1. 修改 exclude_modules
變量
將所有需要排除的模塊都從 exclude_modules
中移除,確保沒有模塊被排除。你可以直接清空 exclude_modules
變量,或者確保沒有任何模塊在其中。
exclude_modules =
2. 清空 include_modules
和 static_modules
確保沒有在 include_modules
或 static_modules
中指定特定的模塊,這樣所有模塊都會按照默認的設置進行編譯。
include_modules =
static_modules =
3. 保持 modules_all
變量
保持原樣,不需要做任何修改。modules_all
會列出所有的模塊。
modules_all = $(filter-out modules/CVS modules/CMakeLists.txt, $(wildcard modules/*))
4. 重新生成配置文件
完成上述修改后,重新運行 make modules-cfg
來重新生成配置文件。所有模塊應該都包含在內。
5. 編譯 Kamailio
最后,運行 make
來開始編譯,所有模塊都會被編譯。
make
通過這些步驟,你可以確保編譯所有的模塊。如果之前已經修改過配置文件,只需清空排除和特定包含的模塊設置,默認情況下會編譯所有模塊。
最終的內容
如果你想要編譯所有模塊,最終的配置文件內容應該類似于以下內容:
# this file is autogenerated by make modules-cfg# the list of sub-directories with modules
modules_dirs := modules# the list of module groups to compile
cfg_group_include =# the list of extra modules to compile
include_modules = # the list of static modules
static_modules = # the list of modules to skip from compile list
skip_modules = # the list of modules to exclude from compile list
exclude_modules = # the list of modules that will be compiled
modules_all = $(filter-out modules/CVS modules/CMakeLists.txt, $(wildcard modules/*))# the list of modules to compile (no exclusions or specific includes)
modules_noinc = $(modules_all) modules = $(modules_noinc)modules_configured := 1
解釋:
include_modules =
和static_modules =
:這兩個變量是空的,意味著沒有額外指定要包含或靜態編譯的模塊。exclude_modules =
:這個變量是空的,意味著沒有模塊被排除。modules_noinc = $(modules_all)
:這個變量包含了所有模塊,因為沒有排除任何模塊。modules = $(modules_noinc)
:最終的modules
變量包含了所有模塊,即所有模塊都會被編譯。
結果:
通過這些修改,Kamailio 將編譯所有模塊,沒有任何排除或指定的模塊。你只需要執行 make
來編譯所有模塊了。