CMake没有正确地将Boost包含在Linux中
我正在使用CMake在Windows和Linux上构建一个项目。 我的CMake脚本正确地生成了Visual Studio解决方案,但在Linux上,我在生成boost include文件时出错CMake没有正确地将Boost包含在Linux中,boost,cmake,Boost,Cmake,我正在使用CMake在Windows和Linux上构建一个项目。 我的CMake脚本正确地生成了Visual Studio解决方案,但在Linux上,我在生成boost include文件时出错 错误 hab@hab-VirtualBox:/media/sf\u GitHub/corona/experimental/MakefileParser$make install [14%]构建CXX对象MakefileParser/src/CMakeFiles/LibMakefileParser.di
错误 hab@hab-VirtualBox:/media/sf\u GitHub/corona/experimental/MakefileParser$make install [14%]构建CXX对象MakefileParser/src/CMakeFiles/LibMakefileParser.dir/lex.yy.c.o makefile.l:11:33:致命错误:boost\filesystem.hpp:没有这样的文件或目录 #包括“boost\filesystem.hpp” ^ 编译终止。 make[2]:*[MakefileParser/src/CMakeFiles/LibMakefileParser.dir/lex.yy.c.o]错误1 make[1]:*[MakefileParser/src/CMakeFiles/LibMakefileParser.dir/all]错误2 make:**[全部]错误2 ======================================================================== CMakeList.txt
SET (INCLUDES
"${PROJECT_SOURCE_DIR}/include/Config.h"
"${PROJECT_SOURCE_DIR}/include/defines.hpp"
"${PROJECT_SOURCE_DIR}/include/Expansion.h"
"${PROJECT_SOURCE_DIR}/include/MakefileParser.h"
"${PROJECT_SOURCE_DIR}/include/StringUtils.h"
)
SET (SOURCES
"lex.yy.c"
"makefile.tab.h"
"Expansion.cpp"
"MakefileParser.cpp"
"StringUtils.cpp"
)
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/include)
INCLUDE_DIRECTORIES("${PROJECT_SOURCE_DIR}/ext/boost_1_60_0_Lite")
LINK_DIRECTORIES("${PROJECT_SOURCE_DIR}/ext/boost_1_60_0_Lite/stage/lib")
ADD_LIBRARY(${PROJECT_NAME} SHARED ${SOURCES} ${INCLUDES})
SET_TARGET_PROPERTIES (${PROJECT_NAME} PROPERTIES LINKER_LANGUAGE CXX)
SET_SOURCE_FILES_PROPERTIES("lex.yy.c" PROPERTIES LANGUAGE CXX )
if(WIN32)
INSTALL(TARGETS ${PROJECT_NAME}
RUNTIME DESTINATION bin)
else()
INSTALL(TARGETS ${PROJECT_NAME}
LIBRARY DESTINATION lib
COMPONENT library)
endif()
SET(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib)
ADD_CUSTOM_COMMAND(TARGET ${PROJECT_NAME}
POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_directory "${LIBRARY_OUTPUT_PATH}/$<CONFIGURATION>" ${EXECUTABLE_OUTPUT_PATH}/$<CONFIGURATION>
)
SET(包括
“${PROJECT\u SOURCE\u DIR}/include/Config.h”
“${PROJECT\u SOURCE\u DIR}/include/defines.hpp”
“${PROJECT\u SOURCE\u DIR}/include/Expansion.h”
“${PROJECT\u SOURCE\u DIR}/include/MakefileParser.h”
“${PROJECT\u SOURCE\u DIR}/include/StringUtils.h”
)
设置(源)
“法律yy.c”
“makefile.tab.h”
“扩展.cpp”
“MakefileParser.cpp”
“StringUtils.cpp”
)
包含目录(${PROJECT\u SOURCE\u DIR}/INCLUDE)
包括目录(${PROJECT\u SOURCE\u DIR}/ext/boost\u 1\u 60\u 0\u Lite”)
链接目录(${PROJECT\u SOURCE\u DIR}/ext/boost\u 1\u 60\u 0\u Lite/stage/lib)
添加库(${PROJECT\u NAME}共享${SOURCES}${INCLUDES})
设置\u目标\u属性(${PROJECT\u NAME}属性链接器\u语言CXX)
设置源文件属性(“lex.yy.c”属性语言CXX)
如果(WIN32)
安装(目标${PROJECT\u NAME}
运行时目标箱)
else()
安装(目标${PROJECT\u NAME}
库目标库
组件库)
endif()
集合(库\输出\路径${PROJECT\源\目录}/lib)
添加自定义命令(目标${PROJECT\u NAME}
后期构建
COMMAND${CMAKE\u COMMAND}-E copy\u目录“${LIBRARY\u OUTPUT\u PATH}/$”${EXECUTABLE\u OUTPUT\u PATH}/$
)
有人遇到过这样的问题吗?
提前谢谢
boost\filesystem.hpp
看起来像windows文件路径,应该是boost/filesystem.hpp
在Linux中您应该使用FindBoost,这使得它更容易在多个系统上工作。是的!成功了。谢谢。我会用FindBoost试试