enable_language(CSharp) set(fileNames "${CMAKE_CURRENT_BINARY_DIR}/content1.txt" "${CMAKE_CURRENT_BINARY_DIR}/content2.txt" "${CMAKE_CURRENT_BINARY_DIR}/content3.txt") foreach(f ${fileNames}) message(STATUS "touch ${f}") file(TOUCH ${f}) endforeach() set_source_files_properties( "${CMAKE_CURRENT_BINARY_DIR}/content1.txt" PROPERTIES VS_COPY_TO_OUT_DIR PreserveNewest ) set_source_files_properties( "${CMAKE_CURRENT_BINARY_DIR}/content2.txt" PROPERTIES VS_COPY_TO_OUT_DIR Always ) add_library(foo SHARED foo.cs ${fileNames} )