diff --git a/cmake/configs/nuttx_aerocore2_default.cmake b/cmake/configs/nuttx_aerocore2_default.cmake
index 835b762c18c18cf45aa1035f79b7a3fe5e8ca0fc..417043f012e4d1ee17c0019f240f08737a038457 100644
--- a/cmake/configs/nuttx_aerocore2_default.cmake
+++ b/cmake/configs/nuttx_aerocore2_default.cmake
@@ -176,14 +176,6 @@ set(config_extra_builtin_cmds
 	sercon
 	)
 
-set(config_extra_libs
-	uavcan
-	uavcan_stm32_driver
-	)
-
-set(config_io_extra_libs
-	)
-
 add_custom_target(sercon)
 set_target_properties(sercon PROPERTIES
 	PRIORITY "SCHED_PRIORITY_DEFAULT"
diff --git a/cmake/configs/nuttx_aerofc-v1_default.cmake b/cmake/configs/nuttx_aerofc-v1_default.cmake
index 446bc8ce564ca013351fa1083deadc8fd69cb911..c5e3ac63df189ecbda88252580f0b1d4bce18c1e 100644
--- a/cmake/configs/nuttx_aerofc-v1_default.cmake
+++ b/cmake/configs/nuttx_aerofc-v1_default.cmake
@@ -120,9 +120,3 @@ set(config_extra_builtin_cmds
 
 set(config_io_board
 	)
-
-set(config_extra_libs
-	)
-
-set(config_io_extra_libs
-	)
diff --git a/cmake/configs/nuttx_auav-x21_default.cmake b/cmake/configs/nuttx_auav-x21_default.cmake
index 29a042c168830623928622f3fc478c31511fcefe..d4db053711ed380de3903bc309886f4accfcf974 100644
--- a/cmake/configs/nuttx_auav-x21_default.cmake
+++ b/cmake/configs/nuttx_auav-x21_default.cmake
@@ -201,14 +201,6 @@ set(config_io_board
 	px4io-v2
 	)
 
-set(config_extra_libs
-	uavcan
-	uavcan_stm32_driver
-	)
-
-set(config_io_extra_libs
-	)
-
 add_custom_target(sercon)
 set_target_properties(sercon PROPERTIES
 	PRIORITY "SCHED_PRIORITY_DEFAULT"
diff --git a/cmake/configs/nuttx_crazyflie_default.cmake b/cmake/configs/nuttx_crazyflie_default.cmake
index b23784892a6612b6e672d13453dcbbb4ab4721b2..0de4bb02568a609acf7d7e8661d5439c803cec20 100644
--- a/cmake/configs/nuttx_crazyflie_default.cmake
+++ b/cmake/configs/nuttx_crazyflie_default.cmake
@@ -145,9 +145,6 @@ set(config_extra_builtin_cmds
 	sercon
 	)
 
-set(config_extra_libs
-	)
-
 add_custom_target(sercon)
 set_target_properties(sercon PROPERTIES
 	PRIORITY "SCHED_PRIORITY_DEFAULT"
diff --git a/cmake/configs/nuttx_esc35-v1_default.cmake b/cmake/configs/nuttx_esc35-v1_default.cmake
index b8a10fb25af77bd65f9f1c3e5251ef04898ed67a..2961b41264e3d473dd6a7a7335686d0f96e836f9 100644
--- a/cmake/configs/nuttx_esc35-v1_default.cmake
+++ b/cmake/configs/nuttx_esc35-v1_default.cmake
@@ -86,11 +86,6 @@ set(config_extra_builtin_cmds
 	sercon
 	)
 
-set(config_extra_libs
-	uavcan
-	uavcan_stm32_driver
-	)
-
 add_custom_target(sercon)
 set_target_properties(sercon PROPERTIES
 	PRIORITY "SCHED_PRIORITY_DEFAULT"
diff --git a/cmake/configs/nuttx_mindpx-v2_default.cmake b/cmake/configs/nuttx_mindpx-v2_default.cmake
index 3fc342be42cc838e94e236a61571cb61b644768d..2903a545a29aeb1b8e6b1ad63ab986e2c0bde851 100644
--- a/cmake/configs/nuttx_mindpx-v2_default.cmake
+++ b/cmake/configs/nuttx_mindpx-v2_default.cmake
@@ -204,14 +204,6 @@ set(config_extra_builtin_cmds
 	sercon
 	)
 
-set(config_extra_libs
-	uavcan
-	uavcan_stm32_driver
-	)
-
-set(config_io_extra_libs
-	)
-
 add_custom_target(sercon)
 set_target_properties(sercon PROPERTIES
 	PRIORITY "SCHED_PRIORITY_DEFAULT"
diff --git a/cmake/configs/nuttx_px4cannode-v1_default.cmake b/cmake/configs/nuttx_px4cannode-v1_default.cmake
index 73f476ab32bd074179d27e95f1baa9febcbc9988..bf0a78c15d84866ceeadf35a595975f3b8a0e6b2 100644
--- a/cmake/configs/nuttx_px4cannode-v1_default.cmake
+++ b/cmake/configs/nuttx_px4cannode-v1_default.cmake
@@ -71,8 +71,3 @@ set(config_module_list
 
 
 )
-
-set(config_extra_libs
-	uavcan
-	uavcan_stm32_driver
-	)
diff --git a/cmake/configs/nuttx_px4esc-v1_default.cmake b/cmake/configs/nuttx_px4esc-v1_default.cmake
index e5414a493e4c981868daeced3f49f19e45bb19bb..4627ef808433ebc07e74d8e07339049882789f66 100644
--- a/cmake/configs/nuttx_px4esc-v1_default.cmake
+++ b/cmake/configs/nuttx_px4esc-v1_default.cmake
@@ -85,11 +85,6 @@ set(config_extra_builtin_cmds
 	sercon
 	)
 
-set(config_extra_libs
-	uavcan
-	uavcan_stm32_driver
-	)
-
 add_custom_target(sercon)
 set_target_properties(sercon PROPERTIES
 	PRIORITY "SCHED_PRIORITY_DEFAULT"
diff --git a/cmake/configs/nuttx_px4fmu-v1_default.cmake b/cmake/configs/nuttx_px4fmu-v1_default.cmake
index a1565aeb64847fda82179ee382327fcc8e878158..7a27e1da7078d037eaae2bdab87b9b7e301b64f5 100644
--- a/cmake/configs/nuttx_px4fmu-v1_default.cmake
+++ b/cmake/configs/nuttx_px4fmu-v1_default.cmake
@@ -174,12 +174,6 @@ set(config_io_board
 	px4io-v1
 	)
 
-set(config_extra_libs
-	)
-
-set(config_io_extra_libs
-	)
-
 add_custom_target(sercon)
 set_target_properties(sercon PROPERTIES
 	PRIORITY "SCHED_PRIORITY_DEFAULT"
diff --git a/cmake/configs/nuttx_px4fmu-v2_default.cmake b/cmake/configs/nuttx_px4fmu-v2_default.cmake
index a72f82defec7d613da7dc4e5c95750716f25c5fe..40a7ab4dd79e2fd6ea6bffdb573e488ce08ba9fd 100644
--- a/cmake/configs/nuttx_px4fmu-v2_default.cmake
+++ b/cmake/configs/nuttx_px4fmu-v2_default.cmake
@@ -204,14 +204,6 @@ set(config_io_board
 	px4io-v2
 	)
 
-#set(config_extra_libs
-#	uavcan
-#	uavcan_stm32_driver
-#	)
-
-set(config_io_extra_libs
-	)
-
 add_custom_target(sercon)
 set_target_properties(sercon PROPERTIES
 	PRIORITY "SCHED_PRIORITY_DEFAULT"
diff --git a/cmake/configs/nuttx_px4fmu-v2_test.cmake b/cmake/configs/nuttx_px4fmu-v2_test.cmake
index b0671952dfb1e5a982ec2057b292d1fd340a4812..8f627f8ad43e6562ef0f2fb7a52a2eeec76e14e1 100644
--- a/cmake/configs/nuttx_px4fmu-v2_test.cmake
+++ b/cmake/configs/nuttx_px4fmu-v2_test.cmake
@@ -199,14 +199,6 @@ set(config_io_board
 	px4io-v2
 	)
 
-#set(config_extra_libs
-#	uavcan
-#	uavcan_stm32_driver
-#	)
-
-set(config_io_extra_libs
-	)
-
 add_custom_target(sercon)
 set_target_properties(sercon PROPERTIES
 	PRIORITY "SCHED_PRIORITY_DEFAULT"
diff --git a/cmake/configs/nuttx_px4fmu-v3_default.cmake b/cmake/configs/nuttx_px4fmu-v3_default.cmake
index 2899078dd5a28e8f3ade01cbd8ba12ee3332ed9c..38fc8b2bc112b37cf6c284634131b830f146d291 100644
--- a/cmake/configs/nuttx_px4fmu-v3_default.cmake
+++ b/cmake/configs/nuttx_px4fmu-v3_default.cmake
@@ -231,14 +231,6 @@ set(config_io_board
 	px4io-v2
 	)
 
-set(config_extra_libs
-	uavcan
-	uavcan_stm32_driver
-	)
-
-set(config_io_extra_libs
-	)
-
 add_custom_target(sercon)
 set_target_properties(sercon PROPERTIES
 	PRIORITY "SCHED_PRIORITY_DEFAULT"
diff --git a/cmake/configs/nuttx_px4fmu-v4_default.cmake b/cmake/configs/nuttx_px4fmu-v4_default.cmake
index 61362f90dd7720af993f26e84911e1a60dcba52a..1a411f549e7e4e7d22d7420642d63d1cece0e4c8 100644
--- a/cmake/configs/nuttx_px4fmu-v4_default.cmake
+++ b/cmake/configs/nuttx_px4fmu-v4_default.cmake
@@ -220,14 +220,6 @@ set(config_extra_builtin_cmds
 	sercon
 	)
 
-set(config_extra_libs
-	uavcan
-	uavcan_stm32_driver
-	)
-
-set(config_io_extra_libs
-	)
-
 add_custom_target(sercon)
 set_target_properties(sercon PROPERTIES
 	PRIORITY "SCHED_PRIORITY_DEFAULT"
diff --git a/cmake/configs/nuttx_px4fmu-v4pro_default.cmake b/cmake/configs/nuttx_px4fmu-v4pro_default.cmake
index 07c7434525267edb4c6570829908887f684704f4..089e740f19b71be3767fe7a8498c68484c520ce7 100644
--- a/cmake/configs/nuttx_px4fmu-v4pro_default.cmake
+++ b/cmake/configs/nuttx_px4fmu-v4pro_default.cmake
@@ -231,14 +231,6 @@ set(config_io_board
 	px4io-v2
 	)
 
-set(config_extra_libs
-	uavcan
-	uavcan_stm32_driver
-	)
-
-set(config_io_extra_libs
-	)
-
 add_custom_target(sercon)
 set_target_properties(sercon PROPERTIES
 	PRIORITY "SCHED_PRIORITY_DEFAULT"
diff --git a/cmake/configs/nuttx_px4fmu-v5_default.cmake b/cmake/configs/nuttx_px4fmu-v5_default.cmake
index ec7639cddf4d0736b17377c355752caf30419279..bbd7f592ef3fecad036a2e3fab05ead47140f0f6 100644
--- a/cmake/configs/nuttx_px4fmu-v5_default.cmake
+++ b/cmake/configs/nuttx_px4fmu-v5_default.cmake
@@ -226,14 +226,6 @@ set(config_extra_builtin_cmds
 	sercon
 	)
 
-set(config_extra_libs
-	uavcan
-	uavcan_stm32_driver
-	)
-
-set(config_io_extra_libs
-	)
-
 add_custom_target(sercon)
 set_target_properties(sercon PROPERTIES
 	PRIORITY "SCHED_PRIORITY_DEFAULT"
diff --git a/cmake/configs/nuttx_px4nucleoF767ZI-v1_default.cmake b/cmake/configs/nuttx_px4nucleoF767ZI-v1_default.cmake
index 6f2a1f45703bd0421c0f7e67b1ec128cea19d046..2f2a0ec34d71dc571aefc690d21d9f7c53b67b9e 100644
--- a/cmake/configs/nuttx_px4nucleoF767ZI-v1_default.cmake
+++ b/cmake/configs/nuttx_px4nucleoF767ZI-v1_default.cmake
@@ -184,14 +184,6 @@ set(config_extra_builtin_cmds
 	sercon
 	)
 
-set(config_extra_libs
-	uavcan
-	uavcan_stm32_driver
-	)
-
-set(config_io_extra_libs
-	)
-
 add_custom_target(sercon)
 set_target_properties(sercon PROPERTIES
 	PRIORITY "SCHED_PRIORITY_DEFAULT"
diff --git a/cmake/configs/nuttx_tap-v1_default.cmake b/cmake/configs/nuttx_tap-v1_default.cmake
index 2e3e24ed4012b09e456c02a8fbb82757721bd455..e54e81d433634e59088d7f9c866f54ec15cc163a 100644
--- a/cmake/configs/nuttx_tap-v1_default.cmake
+++ b/cmake/configs/nuttx_tap-v1_default.cmake
@@ -121,12 +121,6 @@ set(config_extra_builtin_cmds
 set(config_io_board
 	)
 
-set(config_extra_libs
-	)
-
-set(config_io_extra_libs
-	)
-
 add_custom_target(sercon)
 set_target_properties(sercon PROPERTIES
 	PRIORITY "SCHED_PRIORITY_DEFAULT"
diff --git a/src/firmware/nuttx/CMakeLists.txt b/src/firmware/nuttx/CMakeLists.txt
index 8de947001ef83ab7bebe0eb129868e327f83769c..c188370bf7c1165b255fb896da8d6c5c56feebb7 100644
--- a/src/firmware/nuttx/CMakeLists.txt
+++ b/src/firmware/nuttx/CMakeLists.txt
@@ -69,7 +69,6 @@ target_link_libraries(firmware_nuttx
 	${startup_libs}
 	${module_libraries}
 	${df_driver_libs}
-	${config_extra_libs}
 	${nuttx_bootloader_wrapers}
 	${link_libs}
 	-Wl,--end-group)
diff --git a/src/modules/uavcan/CMakeLists.txt b/src/modules/uavcan/CMakeLists.txt
index 921f58324cf5b61d919c7822bcabcdd0e6026b6d..d691962e4e1913629a8780c6ce9157112645f646 100644
--- a/src/modules/uavcan/CMakeLists.txt
+++ b/src/modules/uavcan/CMakeLists.txt
@@ -81,4 +81,4 @@ px4_add_module(
 		uavcan
 	)
 
-## vim: set noet ft=cmake fenc=utf-8 ff=unix :
+target_link_libraries(modules__uavcan uavcan uavcan_stm32_driver)
diff --git a/src/modules/uavcanesc/CMakeLists.txt b/src/modules/uavcanesc/CMakeLists.txt
index b2a98ccb8398925ff6a60ee82cc807a5fe9a39df..fd01ba78381aa357c5b12b312446b840e4519794 100644
--- a/src/modules/uavcanesc/CMakeLists.txt
+++ b/src/modules/uavcanesc/CMakeLists.txt
@@ -82,3 +82,5 @@ px4_add_module(
 		platforms__common
 		uavcan
 	)
+
+target_link_libraries(modules__uavcanesc uavcan uavcan_stm32_driver)
diff --git a/src/modules/uavcannode/CMakeLists.txt b/src/modules/uavcannode/CMakeLists.txt
index 8dbd8d94142c789b5a83a2bbcf116fb5a15dcb5e..8d050f14e59ce5e85f27c4ab3cbbb0a9f2f1c479 100644
--- a/src/modules/uavcannode/CMakeLists.txt
+++ b/src/modules/uavcannode/CMakeLists.txt
@@ -82,3 +82,5 @@ px4_add_module(
 		platforms__common
 		uavcan
 	)
+
+target_link_libraries(modules__uavcannode uavcan uavcan_stm32_driver)