簡體   English   中英

使用cmake打包成zip之前,請最小化CSS和Javascripts文件

[英]Minify CSS and Javascripts files before packing into zip using cmake

我正在使用CMake構建和打包C ++ Web應用程序。 該應用程序需要其他CSS和Javascript文件。 為了簡化在不同計算機上的安裝過程,我准備了一個ZIP文件,並使用類似於以下規則的規則添加所需文件。

# add javascript/CSS
install(DIRECTORY "${PROJECT_SOURCE_DIR}/css" DESTINATION "${THE_HTDOCS_DIR}"
    DIRECTORY_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)

# add images/icons
install(DIRECTORY "${PROJECT_SOURCE_DIR}/ico" DESTINATION "${THE_HTDOCS_DIR}"
    DIRECTORY_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)

將壓縮器或壓縮工具集成到CMake / CPack發布過程中的最佳方法是什么? 例如,最好調用YUICompressor來壓縮CSS / JS文件。 在我的網絡搜索過程中,我沒有找到解決此問題的任何提示。 因此,任何提示都是值得歡迎的。

對我而言,不能使用ant或其他構建系統-我知道對YUICompressor的螞蟻支持。

我自己需要這個,並使用CMake add_custom_command()和add_custom_target()來調用壓縮程序。 它查找yui-copmressor二進制文件,如果CMAKE_BUILD_TYPE不是“ Debug”,則進行壓縮,因此在開發時會更輕松一些。

set(js_in_files
    foo.js
    bar.js
    baz.js
)

find_program(YUI_EXECUTABLE yui-compressor)
if(YUI_EXECUTABLE AND (NOT ${CMAKE_BUILD_TYPE} STREQUAL "Debug"))
    message(STATUS "JS files will be minified before install.")
    foreach(jsfile ${js_in_files})
        set(jsmin "${CMAKE_CURRENT_BINARY_DIR}/${jsfile}.min")
        add_custom_command(OUTPUT ${jsmin}
            COMMAND ${YUI_EXECUTABLE}
            ARGS "${CMAKE_CURRENT_SOURCE_DIR}/${jsfile}" -o "${jsmin}"
        )
        install(FILES ${jsmin}
            DESTINATION "${WEB_INSTALL_PATH}/cgi-bin/scripts/"
            RENAME ${jsfile}
        )
        set(js_out_files ${js_out_files} ${jsmin})
    endforeach(jsfile)
else()
    message(STATUS "JS files will be installed unmodified.")
    foreach(jsfile ${js_in_files})
        install(FILES ${jsfile}
            DESTINATION "${WEB_INSTALL_PATH}/cgi-bin/scripts/"
        )
        set(js_out_files ${js_out_files} ${jsfile})
    endforeach(jsfile)
endif()

add_custom_target(installjs ALL DEPENDS ${js_out_files})

確保調整安裝命令的目的地。 ;-)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM