在不同目录下编译时的行为不同



我的文件结构如下:

gameFolder 
|-cmake-build-debug
|-CMakeLists.txt **for clion build**
|-src
|-example.cpp
|-example.h
|-emscripten **web build**
|-build
|-CMakeLists.txt

这里的问题是当我运行cmake ..在emscripten下的构建文件夹中,cmake无法找到boost库,但是当我运行cmake .在emscripten文件夹中,它直接构建我的项目。

我只是想知道这里发生了什么?是否有一些秘密的奇怪的编译器的东西?为什么我必须在同一文件夹内运行cmake作为文本文件?

编辑:这是我的脚本/CMakeLists.txt

cmake_minimum_required(VERSION 3.17)
project(FernQuest)
message(STATUS "running cmake...")
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/out)
include_directories(.)

message(STATUS "finding boost!")
find_package(Boost 1.74.0 REQUIRED serialization system filesystem COMPONENTS serialization system filesystem)
if(Boost_FOUND)
message(STATUS "found boost!")
endif()
include_directories(${Boost_INCLUDE_DIR})
link_directories(${Boost_LIBRARY_DIR})
if(NOT Boost_FOUND)
message(FATAL_ERROR "Could not find boost!")
endif()
message(STATUS "setting sources")
SET(FQ_SRCS
../src/FernQuest.cpp
../src/Item.cpp
../src/Item.h
../src/Player.cpp
../src/Player.h
../src/Game.cpp
../src/Game.h
../src/QuestLog.cpp
../src/QuestLog.h)

SET(CMAKE_C_COMPILER emcc)
SET(CMAKE_CPP_COMPILER em++)

add_executable(FernQuest.html ${FQ_SRCS})

if(Boost_FOUND)
message(STATUS "found boost!")
target_link_libraries(FernQuest.html)
target_link_libraries(FernQuest.html ${Boost_LIBRARIES})
endif()

和当我按照描述

运行它时得到的错误
build % cmake ..
-- running cmake...
-- finding boost!
CMake Error at /usr/local/Cellar/cmake/3.19.4/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:218 (message):
Could NOT find Boost (missing: Boost_INCLUDE_DIR serialization system
filesystem serialization system filesystem) (Required is at least version
"1.74.0")
Call Stack (most recent call first):
/usr/local/Cellar/cmake/3.19.4/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:582 (_FPHSA_FAILURE_MESSAGE)
/usr/local/Cellar/cmake/3.19.4/share/cmake/Modules/FindBoost.cmake:2193 (find_package_handle_standard_args)
CMakeLists.txt:13 (find_package)

-- Configuring incomplete, errors occurred!

所以我跌跌撞撞了一下,找到了一个解决方案:

include_directories("path-to-emscripten")

对我来说,它是用brew安装的所以我在顶部输入这个,它就成功了

include_directory("/usr/local/Cellar")

最新更新