libwebsockets icon indicating copy to clipboard operation
libwebsockets copied to clipboard

custom_target GENHDR generates MSB8065 warnings under windows platform

Open freemine opened this issue 2 years ago • 0 comments

C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Microsoft\VC\v170\Microsoft.CppCommon.targets(248,5): warning MSB8065: 项“C:\Users\xxh\Documents\taos\mytaos\.externals\build\libwebsockets\src\e
x_libwebsockets-build\lws_config.h”的自定义生成成功,但尚未创建指定的输出“c:\users\xxh\documents\taos\mytaos\.externals\build\libwebsockets\src\ex_libwebsockets-build\genhdr.done”。这可能会导致增量生成无法正常工作。 [C:\Users\xxh\Documents\taos\
mytaos\.externals\build\libwebsockets\src\ex_libwebsockets-build\GENHDR.vcxproj] [C:\Users\xxh\Documents\taos\mytaos\build\ex_libwebsockets.vcxproj]

this was recorded under: windows 11 - chinese version cmake: 3.28.0-rc2 Visual Studio: 2022

FYI, for warning MSB8065, relative info could be found at https://developercommunity.visualstudio.com/t/warning-msb8065-file-not-created/1413417

if this warning exists, incremental build would not be available.

currently, i locate the root cause in /CMakeLists.txt:

add_custom_command(
		OUTPUT ${PROJECT_BINARY_DIR}/include/lws_config.h
			${PROJECT_BINARY_DIR}/include/libwebsockets
			${PROJECT_BINARY_DIR}/include/libwebsockets.h
		COMMENT "Creating build include dir"
		COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/include/libwebsockets.h
     			${CMAKE_CURRENT_BINARY_DIR}/include/libwebsockets.h
		COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/include/libwebsockets/
			${CMAKE_CURRENT_BINARY_DIR}/include/libwebsockets
		COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_BINARY_DIR}/lws_config.h
     			${CMAKE_CURRENT_BINARY_DIR}/include/lws_config.h
		MAIN_DEPENDENCY ${PROJECT_BINARY_DIR}/lws_config.h
)

add_custom_target(GENHDR DEPENDS  ${PROJECT_BINARY_DIR}/include/lws_config.h)

and it would help if make changes as such: NOTE: on libwebsockets branch: v4.3.3

add_custom_command(
		OUTPUT ${PROJECT_BINARY_DIR}/genhdr.done
		COMMENT "Creating build include dir"
		COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/include/libwebsockets.h
     			${CMAKE_CURRENT_BINARY_DIR}/include/libwebsockets.h
		COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/include/libwebsockets/
			${CMAKE_CURRENT_BINARY_DIR}/include/libwebsockets
		COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_BINARY_DIR}/lws_config.h
     			${CMAKE_CURRENT_BINARY_DIR}/include/lws_config.h
     		COMMAND ${CMAKE_COMMAND} -E touch ${PROJECT_BINARY_DIR}/genhdr.done
		MAIN_DEPENDENCY ${PROJECT_BINARY_DIR}/lws_config.h
)

add_custom_target(GENHDR DEPENDS  ${PROJECT_BINARY_DIR}/genhdr.done)

freemine avatar Feb 06 '24 02:02 freemine