首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Emscripten (Emcmake)时指定选项的问题

使用Emscripten (Emcmake)时指定选项的问题
EN

Stack Overflow用户
提问于 2017-02-22 06:42:14
回答 1查看 1.4K关注 0票数 4

我的问题是将CMakeLists.txt与Emscriptem一起使用,并指定输出类型和命令行选项。

我想使用一个简单的Emscripten命令,比如:emcc file.cpp -o file.html --preload-file asset_dir/,并将其更改为我可以在CMake系统中指定的内容。我尝试了一种天真的方法,将可执行文件重命名为html的扩展名,但这不起作用。我也尝试过使用-D--preload-file:PATH=asset_dir,但也不起作用。

我的CMakeLists.txt文件很小,包含在下面。我使用命令emcmake cmake -G"Unix Makefiles" -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_COMPILER=em++ .. && emmake make来构建它。

代码语言:javascript
复制
CMAKE_MINIMUM_REQUIRED(VERSION 3.2.0 FATAL_ERROR)
PROJECT(ProjJS)

# Set typical CMAKE settings
SET(CMAKE_BUILD_TYPE_INIT "Release")
SET(CMAKE_VERBOSE_MAKEFILE OFF CACHE BOOL "Turn on Verbose Makefiles" FORCE)
set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/modules")

SET(CMAKE_CXX_STANDARD 11)
SET(CMAKE_CXX_STANDARD_REQUIRED ON)

SET(PROJ_SOURCES
    hello.cpp
    ....
)

set(NAME_OF_EXE "ProjJS")

set(BOOST_LIB "boost")
set(BOOST_INCLUDE_PATH "${CMAKE_SOURCE_DIR}/extlibs/")
set(BOOST_LIB_PATH "${CMAKE_SOURCE_DIR}/extlibs/boost/libs/")

add_subdirectory(extlibs/boost)


SET(BOOST_PROGRAM_OPTIONS_SOURCES
    ${BOOST_LIB_PATH}/program_options/cmdline.cpp
    ${BOOST_LIB_PATH}/program_options/config_file.cpp
    ....
)

SET(BOOST_SYSTEM_SOURCES
    ${BOOST_LIB_PATH}/system/error_code.cpp
)

ADD_EXECUTABLE(${NAME_OF_EXE} ${PROJ_SOURCES})
add_library(${BOOST_LIB} STATIC ${BOOST_PROGRAM_OPTIONS_SOURCES} ${BOOST_SYSTEM_SOURCES})
TARGET_INCLUDE_DIRECTORIES(${BOOST_LIB} PUBLIC "${BOOST_INCLUDE_PATH}")

TARGET_LINK_LIBRARIES(${NAME_OF_EXE} PUBLIC ${BOOST_LIB})
TARGET_INCLUDE_DIRECTORIES(${NAME_OF_EXE} BEFORE PRIVATE "${CMAKE_SOURCE_DIR}/include")
TARGET_INCLUDE_DIRECTORIES(${NAME_OF_EXE} BEFORE PRIVATE "${BOOST_INCLUDE_PATH}" ${PROJ_SOURCES})
EN

回答 1

Stack Overflow用户

发布于 2020-05-15 01:18:01

对于输出后缀,应该可以这样做:

代码语言:javascript
复制
set(CMAKE_EXECUTABLE_SUFFIX ".html")

完整示例:

代码语言:javascript
复制
cmake_minimum_required(VERSION 2.6 FATAL_ERROR)
project(demo)

set(CMAKE_EXECUTABLE_SUFFIX ".html")

add_executable(hello tests/hello_world.cpp)

这将发出hello.html等。

对于其他标志,我找到的最好的选择是使用target_link_libraries,CMake只是将其附加到链接行,并且可以包含任何内容。例如:

代码语言:javascript
复制
target_link_libraries(binaryen_js "-s MODULARIZE")
target_link_libraries(binaryen_js "-s INITIAL_MEMORY=512MB")

这将打开模块化并将初始内存设置为512MB (来自Binaryen CMake script的示例)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42379391

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档