Слияние кода завершено, страница обновится автоматически
cmake_minimum_required(VERSION 3.5)
project(yue CXX)
set(LUA_LIBDIR ${LUA_INCDIR}/../lib ${LUA_INCDIR}/../../lib)
set(LUA_INCLUDE_DIR "${LUA_INCDIR}")
get_filename_component(LUA_EXEC_NAME ${LUA} NAME)
if (LUA_EXEC_NAME STREQUAL "luajit")
find_library(LUA_LIBRARIES
NAMES luajit libluajit
PATHS ${LUA_LIBDIR}
NO_DEFAULT_PATH)
elseif (LUA_EXEC_NAME MATCHES "lua5\.4" OR LUA_EXEC_NAME MATCHES "lua54")
find_library(LUA_LIBRARIES
NAMES lua54 lua5.4 liblua54 liblua5.4 lua liblua
PATHS ${LUA_LIBDIR}
NO_DEFAULT_PATH)
elseif (LUA_EXEC_NAME MATCHES "lua5\.3" OR LUA_EXEC_NAME MATCHES "lua53")
find_library(LUA_LIBRARIES
NAMES lua53 lua5.3 liblua53 liblua5.3 lua liblua
PATHS ${LUA_LIBDIR}
NO_DEFAULT_PATH)
elseif (LUA_EXEC_NAME MATCHES "lua5\.2" OR LUA_EXEC_NAME MATCHES "lua52")
find_library(LUA_LIBRARIES
NAMES lua52 lua5.2 liblua52 liblua5.2 lua liblua
PATHS ${LUA_LIBDIR}
NO_DEFAULT_PATH)
elseif (LUA_EXEC_NAME MATCHES "lua5\.1" OR LUA_EXEC_NAME MATCHES "lua51")
find_library(LUA_LIBRARIES
NAMES lua51 lua5.1 liblua51 liblua5.1 lua liblua
PATHS ${LUA_LIBDIR}
NO_DEFAULT_PATH)
else ()
find_library(LUA_LIBRARIES
NAMES lua liblua
PATHS ${LUA_LIBDIR}
NO_DEFAULT_PATH)
endif()
if (LUA_LIBRARIES MATCHES "LUA_LIBRARIES-NOTFOUND")
find_package(Lua)
if (LUA_FOUND)
set(LUA_LIBRARIES "${LUA_LIBRARY}")
endif()
else ()
message(STATUS "Lua: using information from luarocks")
endif()
message(STATUS "Lua: " ${LUA})
message(STATUS "Lua include: " ${LUA_INCLUDE_DIR})
message(STATUS "Lua library: ${LUA_LIBRARIES}")
enable_language(CXX)
include_directories(src src/3rdParty ${LUA_INCLUDE_DIR})
add_definitions(-std=c++17 -O3 -fPIC)
if (APPLE)
add_definitions(-Wno-deprecated-declarations)
endif ()
add_library(libyue MODULE
src/yuescript/ast.cpp
src/yuescript/parser.cpp
src/yuescript/yue_ast.cpp
src/yuescript/yue_parser.cpp
src/yuescript/yue_compiler.cpp
src/yuescript/yuescript.cpp
)
set_target_properties(libyue PROPERTIES PREFIX "")
set_target_properties(libyue PROPERTIES OUTPUT_NAME "yue")
target_link_libraries(libyue ${LUA_LIBRARIES})
add_executable(yue
src/yuescript/ast.cpp
src/yuescript/parser.cpp
src/yuescript/yue_ast.cpp
src/yuescript/yue_parser.cpp
src/yuescript/yue_compiler.cpp
src/yuescript/yuescript.cpp
src/yue.cpp
)
target_sources(yue PRIVATE
src/3rdParty/efsw/Debug.cpp
src/3rdParty/efsw/DirectorySnapshot.cpp
src/3rdParty/efsw/DirectorySnapshotDiff.cpp
src/3rdParty/efsw/DirWatcherGeneric.cpp
src/3rdParty/efsw/FileInfo.cpp
src/3rdParty/efsw/FileSystem.cpp
src/3rdParty/efsw/FileWatcher.cpp
src/3rdParty/efsw/FileWatcherCWrapper.cpp
src/3rdParty/efsw/FileWatcherGeneric.cpp
src/3rdParty/efsw/FileWatcherImpl.cpp
src/3rdParty/efsw/Log.cpp
src/3rdParty/efsw/Mutex.cpp
src/3rdParty/efsw/String.cpp
src/3rdParty/efsw/System.cpp
src/3rdParty/efsw/Thread.cpp
src/3rdParty/efsw/Watcher.cpp
src/3rdParty/efsw/WatcherGeneric.cpp
)
if (WIN32)
target_sources(yue PRIVATE
src/3rdParty/efsw/platform/win/FileSystemImpl.cpp
src/3rdParty/efsw/platform/win/MutexImpl.cpp
src/3rdParty/efsw/platform/win/SystemImpl.cpp
src/3rdParty/efsw/platform/win/ThreadImpl.cpp
)
else ()
target_sources(yue PRIVATE
src/3rdParty/efsw/platform/posix/FileSystemImpl.cpp
src/3rdParty/efsw/platform/posix/MutexImpl.cpp
src/3rdParty/efsw/platform/posix/SystemImpl.cpp
src/3rdParty/efsw/platform/posix/ThreadImpl.cpp
)
endif()
if (APPLE)
target_sources(yue PRIVATE
src/3rdParty/efsw/FileWatcherFSEvents.cpp
src/3rdParty/efsw/FileWatcherKqueue.cpp
src/3rdParty/efsw/WatcherFSEvents.cpp
src/3rdParty/efsw/WatcherKqueue.cpp
)
if (NOT CMAKE_SYSTEM_VERSION GREATER 9)
target_compile_definitions(yue PRIVATE EFSW_FSEVENTS_NOT_SUPPORTED)
endif()
elseif (WIN32)
target_sources(yue PRIVATE
src/3rdParty/efsw/FileWatcherWin32.cpp
src/3rdParty/efsw/WatcherWin32.cpp
)
elseif (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
target_sources(yue PRIVATE
src/3rdParty/efsw/FileWatcherInotify.cpp
src/3rdParty/efsw/WatcherInotify.cpp
)
if (NOT EXISTS "/usr/include/sys/inotify.h" AND NOT EXISTS "/usr/local/include/sys/inotify.h")
target_compile_definitions(yue PRIVATE EFSW_INOTIFY_NOSYS)
endif()
elseif (${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD")
target_sources(yue PRIVATE
src/3rdParty/efsw/FileWatcherKqueue.cpp
src/3rdParty/efsw/WatcherKqueue.cpp
)
endif()
if (MSVC)
target_compile_definitions(yue PRIVATE _SCL_SECURE_NO_WARNINGS)
else ()
target_compile_options(yue PRIVATE -Wall -Wno-long-long -fPIC)
endif()
if (${CMAKE_BUILD_TYPE} MATCHES "Debug")
target_compile_definitions(yue PRIVATE DEBUG)
elseif (${CMAKE_BUILD_TYPE} MATCHES "Release")
target_compile_definitions(yue PRIVATE NDEBUG)
endif()
find_package(Threads REQUIRED)
if (APPLE)
set(MAC_LIBS "-framework CoreFoundation" "-framework CoreServices")
target_link_libraries(yue PRIVATE ${LUA_LIBRARIES} ${MAC_LIBS} Threads::Threads)
elseif (NOT (${CMAKE_SYSTEM_NAME} MATCHES "Haiku") AND NOT WIN32)
target_link_libraries(yue PRIVATE ${LUA_LIBRARIES} Threads::Threads)
else ()
target_link_libraries(yue PRIVATE ${LUA_LIBRARIES})
endif()
if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
target_link_options(yue PRIVATE -lstdc++fs -ldl)
endif (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
install(CODE "")
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )