从CMake调用时,M4会报错“没有那个文件或目录”
在我的项目根目录下,我有一个名为“frontend”的文件夹,其中包含带有m4宏的HTML文件,以及一个 tokens.m4 文件。
在这些HTML文件的顶部有一个include:
<!DOCTYPE html>
<html lang="en">
<head>
<!--
include(`tokens.m4')
-->
如果我像下面这样手动运行m4:
m4 _index.html >index.html
它可以找到 tokens.m4,并正确输出。
在 frontend/CMakeLists.txt 中,用这段代码运行 cmake --build:
add_custom_target(frontend
COMMAND m4 ${CMAKE_CURRENT_SOURCE_DIR}/_index.html >${CMAKE_BINARY_DIR}/index.html
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/_index.html
)
frontend/_index.html at line 5: include(tokens.m4): No such file or directory
那么,如何让m4在 CMake中找到 tokens.m4 文件?
解决方案
解决方案,如 @Tsyvarev所贴所述,是将 WORKING_DIRECTORY 添加到 add_custom_target 中。
add_custom_target(frontend
COMMAND m4 _index.html >${CMAKE_BINARY_DIR}/index.html
DEPENDS _index.html
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
)
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。