From dabb3f6ba538415dbfe3adbea3a347fa98234906 Mon Sep 17 00:00:00 2001 From: guoling Date: Tue, 17 Dec 2019 21:47:33 +0800 Subject: [PATCH] most things for Win32 actually work --- Core/InterProcessLock.cpp | 68 +++++- Core/InterProcessLock.h | 26 ++- Core/MMKV.cpp | 97 +++++---- Core/MMKV.h | 14 +- Core/MMKVMetaInfo.hpp | 2 +- Core/MMKVPredef.h | 27 ++- Core/MMKV_Android.cpp | 9 +- Core/MemoryFile.cpp | 64 +++--- Core/MemoryFile.h | 38 ++-- Core/MemoryFile_Android.cpp | 25 +-- Core/MemoryFile_Win32.cpp | 358 ++++++++++++++++++++++++++++++++ Core/MiniPBCoder.cpp | 4 +- Core/PBUtility.h | 15 +- Core/ThreadLock.cpp | 56 +++-- Core/ThreadLock.h | 10 +- Core/core.vcxproj | 380 ++++++++++++++++++++++++++++++++++ Core/core.vcxproj.filters | 153 ++++++++++++++ Win32/Win32.sln | 140 +++++++------ Win32/Win32Demo/Win32Demo.cpp | 2 +- 19 files changed, 1291 insertions(+), 197 deletions(-) mode change 100644 => 100755 Core/InterProcessLock.h mode change 100644 => 100755 Core/MMKVMetaInfo.hpp create mode 100644 Core/MemoryFile_Win32.cpp mode change 100644 => 100755 Core/MiniPBCoder.cpp create mode 100755 Core/core.vcxproj create mode 100755 Core/core.vcxproj.filters mode change 100644 => 100755 Win32/Win32Demo/Win32Demo.cpp diff --git a/Core/InterProcessLock.cpp b/Core/InterProcessLock.cpp index beb86fd5..b0dd2ea4 100644 --- a/Core/InterProcessLock.cpp +++ b/Core/InterProcessLock.cpp @@ -20,10 +20,13 @@ #include "InterProcessLock.h" #include "MMKVLog.h" -#include + +#ifndef MMKV_WIN32 +# include +#endif namespace mmkv { - +#ifndef MMKV_WIN32 static uint32_t LockType2FlockType(LockType lockType) { switch (lockType) { case SharedLockType: @@ -33,6 +36,20 @@ static uint32_t LockType2FlockType(LockType lockType) { } return LOCK_EX; } +#else +static DWORD LockType2Flag(LockType lockType) { + DWORD flag = 0; + switch (lockType) { + case SharedLockType: + flag = 0; + break; + case ExclusiveLockType: + flag = LOCKFILE_EXCLUSIVE_LOCK; + break; + } + return flag; +} +#endif bool FileLock::doLock(LockType lockType, bool wait) { if (!isFileLockValid()) { @@ -58,6 +75,7 @@ bool FileLock::doLock(LockType lockType, bool wait) { } } +#ifndef MMKV_WIN32 auto realLockType = LockType2FlockType(lockType); int cmd = wait ? realLockType : (realLockType | LOCK_NB); if (unLockFirstIfNeeded) { @@ -81,6 +99,30 @@ bool FileLock::doLock(LockType lockType, bool wait) { } else { return true; } +#else + auto realLockType = LockType2Flag(lockType); + auto flag = wait ? realLockType : (realLockType | LOCKFILE_FAIL_IMMEDIATELY); + if (unLockFirstIfNeeded) { + /* try exclusive-lock above shared-lock will always fail in Win32 + auto ret = LockFileEx(m_fd, realLockType | LOCKFILE_FAIL_IMMEDIATELY, 0, 1, 0, &m_overLapped); + if (ret) { + return true; + }*/ + // lets be gentleman: unlock my shared-lock to prevent deadlock + auto ret = UnlockFileEx(m_fd, 0, 1, 0, &m_overLapped); + if (!ret) { + MMKVError("fail to try unlock first fd=%p, error:%d", m_fd, GetLastError()); + } + } + + auto ret = LockFileEx(m_fd, flag, 0, 1, 0, &m_overLapped); + if (!ret) { + MMKVError("fail to lock fd=%p, error:%d", m_fd, GetLastError()); + return false; + } else { + return true; + } +#endif } bool FileLock::lock(LockType lockType) { @@ -120,6 +162,7 @@ bool FileLock::unlock(LockType lockType) { } } +#ifndef MMKV_WIN32 int cmd = unlockToSharedLock ? LOCK_SH : LOCK_UN; auto ret = flock(m_fd, cmd); if (ret != 0) { @@ -128,6 +171,27 @@ bool FileLock::unlock(LockType lockType) { } else { return true; } +#else + /* quote from MSDN: + * If the same range is locked with an exclusive and a shared lock, + * two unlock operations are necessary to unlock the region; + * the first unlock operation unlocks the exclusive lock, + * the second unlock operation unlocks the shared lock. + */ + if (unlockToSharedLock) { + auto flag = LockType2Flag(SharedLockType); + if (!LockFileEx(m_fd, flag, 0, 1, 0, &m_overLapped)) { + MMKVError("fail to roll back to shared-lock, error:%d", GetLastError()); + } + } + auto ret = UnlockFileEx(m_fd, 0, 1, 0, &m_overLapped); + if (!ret) { + MMKVError("fail to unlock fd=%p, error:%d", m_fd, GetLastError()); + return false; + } else { + return true; + } +#endif } } // namespace mmkv diff --git a/Core/InterProcessLock.h b/Core/InterProcessLock.h old mode 100644 new mode 100755 index 6a6556f3..476cde46 --- a/Core/InterProcessLock.h +++ b/Core/InterProcessLock.h @@ -21,6 +21,8 @@ #ifndef MMKV_INTERPROCESSLOCK_H #define MMKV_INTERPROCESSLOCK_H +#include "MMKVPredef.h" + #include #include @@ -34,26 +36,36 @@ enum LockType { // a recursive POSIX file-lock wrapper // handles lock upgrade & downgrade correctly class FileLock { - int m_fd; + MMKV_FILE_HANDLE m_fd; size_t m_sharedLockCount; size_t m_exclusiveLockCount; bool doLock(LockType lockType, bool wait); +#ifndef MMKV_WIN32 bool isFileLockValid() { return m_fd >= 0; } +#else + OVERLAPPED m_overLapped; + bool isFileLockValid() { return m_fd != INVALID_HANDLE_VALUE; } +#endif public: - explicit FileLock(int fd) : m_fd(fd), m_sharedLockCount(0), m_exclusiveLockCount(0) {} - - // just forbid it for possibly misuse - FileLock(const FileLock &other) = delete; - FileLock &operator=(const FileLock &other) = delete; - +#ifndef MMKV_WIN32 + explicit FileLock(MMKV_FILE_HANDLE fd) + : m_fd(fd), m_sharedLockCount(0), m_exclusiveLockCount(0) {} +#else + explicit FileLock(MMKV_FILE_HANDLE fd) + : m_fd(fd), m_overLapped{0}, m_sharedLockCount(0), m_exclusiveLockCount(0) {} +#endif bool lock(LockType lockType); bool try_lock(LockType lockType); bool unlock(LockType lockType); + + // just forbid it for possibly misuse + FileLock(const FileLock &other) = delete; + FileLock &operator=(const FileLock &other) = delete; }; class InterProcessLock { diff --git a/Core/MMKV.cpp b/Core/MMKV.cpp index 84f225a4..b71ad791 100644 --- a/Core/MMKV.cpp +++ b/Core/MMKV.cpp @@ -34,27 +34,33 @@ #include #include #include -#include using namespace std; using namespace mmkv; unordered_map *g_instanceDic; ThreadLock g_instanceLock; -static std::string g_rootDir; +static MMKV_PATH_TYPE g_rootDir; static mmkv::ErrorHandler g_errorHandler; int mmkv::DEFAULT_MMAP_SIZE; constexpr auto DEFAULT_MMAP_ID = "mmkv.default"; +#ifndef MMKV_WIN32 constexpr auto SPECIAL_CHARACTER_DIRECTORY_NAME = "specialCharacter"; +#else +constexpr auto SPECIAL_CHARACTER_DIRECTORY_NAME = L"specialCharacter"; +#endif constexpr uint32_t Fixed32Size = pbFixed32Size(0); -string mmapedKVKey(const string &mmapID, string *relativePath = nullptr); -string mappedKVPathWithID(const string &mmapID, MMKVMode mode, string *relativePath = nullptr); -string crcPathWithID(const string &mmapID, MMKVMode mode, string *relativePath = nullptr); +string mmapedKVKey(const string &mmapID, MMKV_PATH_TYPE *relativePath = nullptr); +MMKV_PATH_TYPE +mappedKVPathWithID(const string &mmapID, MMKVMode mode, MMKV_PATH_TYPE *relativePath = nullptr); +MMKV_PATH_TYPE +crcPathWithID(const string &mmapID, MMKVMode mode, MMKV_PATH_TYPE *relativePath = nullptr); static void mkSpecialCharacterFileDirectory(); static string md5(const string &value); -static string encodeFilePath(const string &mmapID); +static string md5(const wstring &value); +static MMKV_PATH_TYPE encodeFilePath(const string &mmapID); static MMKVRecoverStrategic onMMKVCRCCheckFail(const std::string &mmapID); static MMKVRecoverStrategic onMMKVFileLengthError(const std::string &mmapID); @@ -65,7 +71,7 @@ enum : bool { }; #ifndef MMKV_ANDROID -MMKV::MMKV(const std::string &mmapID, MMKVMode mode, string *cryptKey, string *relativePath) +MMKV::MMKV(const std::string &mmapID, MMKVMode mode, string *cryptKey, MMKV_PATH_TYPE *relativePath) : m_mmapID(mmapedKVKey(mmapID, relativePath)) , m_path(mappedKVPathWithID(m_mmapID, mode, relativePath)) , m_crcPath(crcPathWithID(m_mmapID, mode, relativePath)) @@ -88,6 +94,7 @@ MMKV::MMKV(const std::string &mmapID, MMKVMode mode, string *cryptKey, string *r m_crcDigest = 0; + m_lock.initialize(); m_sharedProcessLock.m_enable = m_isInterProcess; m_exclusiveProcessLock.m_enable = m_isInterProcess; @@ -119,30 +126,29 @@ MMKV *MMKV::defaultMMKV(MMKVMode mode, string *cryptKey) { void initialize() { g_instanceDic = new unordered_map; g_instanceLock = ThreadLock(); + g_instanceLock.initialize(); mmkv::DEFAULT_MMAP_SIZE = mmkv::getPageSize(); MMKVInfo("page size:%d", DEFAULT_MMAP_SIZE); } -void MMKV::initializeMMKV(const string &rootDir, MMKVLogLevel logLevel) { +void MMKV::initializeMMKV(const MMKV_PATH_TYPE &rootDir, MMKVLogLevel logLevel) { g_currentLogLevel = logLevel; static ThreadOnceToken once_control = ThreadOnceUninitialized; ThreadLock::ThreadOnce(&once_control, initialize); g_rootDir = rootDir; - char *path = strdup(g_rootDir.c_str()); - if (path) { - mkPath(path); - free(path); - } + mkPath(g_rootDir); - MMKVInfo("root dir: %s", g_rootDir.c_str()); + MMKVInfo("root dir: " MMKV_PATH_FORMAT, g_rootDir.c_str()); } #ifndef MMKV_ANDROID -MMKV * -MMKV::mmkvWithID(const string &mmapID, MMKVMode mode, string *cryptKey, string *relativePath) { +MMKV *MMKV::mmkvWithID(const string &mmapID, + MMKVMode mode, + string *cryptKey, + MMKV_PATH_TYPE *relativePath) { if (mmapID.empty()) { return nullptr; @@ -196,7 +202,7 @@ string MMKV::cryptKey() { return ""; } -#pragma mark - really dirty work +// really dirty work void decryptBuffer(AESCrypt &crypter, MMBuffer &inputBuffer) { size_t length = inputBuffer.length(); @@ -1326,18 +1332,18 @@ void MMKV::sync(SyncFlag flag) { } bool MMKV::isFileValid(const string &mmapID) { - string kvPath = mappedKVPathWithID(mmapID, MMKV_SINGLE_PROCESS); + MMKV_PATH_TYPE kvPath = mappedKVPathWithID(mmapID, MMKV_SINGLE_PROCESS); if (!isFileExist(kvPath)) { return true; } - string crcPath = crcPathWithID(mmapID, MMKV_SINGLE_PROCESS); + MMKV_PATH_TYPE crcPath = crcPathWithID(mmapID, MMKV_SINGLE_PROCESS); if (!isFileExist(crcPath.c_str())) { return false; } uint32_t crcFile = 0; - MMBuffer *data = readWholeFile(crcPath.c_str()); + MMBuffer *data = readWholeFile(crcPath); if (data) { if (data->getPtr()) { MMKVMetaInfo metaInfo; @@ -1351,7 +1357,7 @@ bool MMKV::isFileValid(const string &mmapID) { const int offset = pbFixed32Size(0); uint32_t crcDigest = 0; - MMBuffer *fileData = readWholeFile(kvPath.c_str()); + MMBuffer *fileData = readWholeFile(kvPath); if (fileData) { if (fileData->getPtr() && fileData->length() >= Fixed32Size) { uint32_t actualSize = 0; @@ -1397,11 +1403,8 @@ void MMKV::setLogLevel(MMKVLogLevel level) { } static void mkSpecialCharacterFileDirectory() { - char *path = strdup((g_rootDir + MMKV_PATH_SLASH + SPECIAL_CHARACTER_DIRECTORY_NAME).c_str()); - if (path) { - mkPath(path); - free(path); - } + MMKV_PATH_TYPE path = g_rootDir + MMKV_PATH_SLASH + SPECIAL_CHARACTER_DIRECTORY_NAME; + mkPath(path); } static string md5(const string &value) { @@ -1415,7 +1418,19 @@ static string md5(const string &value) { return string(buf); } -static string encodeFilePath(const string &mmapID) { +static string md5(const wstring &value) { + unsigned char md[MD5_DIGEST_LENGTH] = {0}; + char tmp[3] = {0}, buf[33] = {0}; + MD5((const unsigned char *) value.c_str(), + value.size() * (sizeof(wchar_t) / sizeof(unsigned char)), md); + for (auto ch : md) { + snprintf(tmp, sizeof(tmp), "%2.2x", ch); + strcat(buf, tmp); + } + return string(buf); +} + +static MMKV_PATH_TYPE encodeFilePath(const string &mmapID) { const char *specialCharacters = "\\/:*?\"<>|"; string encodedID; bool hasSpecialCharacter = false; @@ -1429,25 +1444,27 @@ static string encodeFilePath(const string &mmapID) { if (hasSpecialCharacter) { static ThreadOnceToken once_control = ThreadOnceUninitialized; ThreadLock::ThreadOnce(&once_control, mkSpecialCharacterFileDirectory); - return string(SPECIAL_CHARACTER_DIRECTORY_NAME) + MMKV_PATH_SLASH + encodedID; + return MMKV_PATH_TYPE(SPECIAL_CHARACTER_DIRECTORY_NAME) + MMKV_PATH_SLASH + + string2MMKV_PATH_TYPE(encodedID); } else { - return mmapID; + return string2MMKV_PATH_TYPE(mmapID); } } -string mmapedKVKey(const string &mmapID, string *relativePath) { +string mmapedKVKey(const string &mmapID, MMKV_PATH_TYPE *relativePath) { if (relativePath && g_rootDir != (*relativePath)) { - return md5(*relativePath + MMKV_PATH_SLASH + mmapID); + return md5(*relativePath + MMKV_PATH_SLASH + string2MMKV_PATH_TYPE(mmapID)); } return mmapID; } -string mappedKVPathWithID(const string &mmapID, MMKVMode mode, string *relativePath) { +MMKV_PATH_TYPE +mappedKVPathWithID(const string &mmapID, MMKVMode mode, MMKV_PATH_TYPE *relativePath) { #ifndef MMKV_ANDROID if (relativePath) { #else if (mode & MMKV_ASHMEM) { - return string(ASHMEM_NAME_DEF) + MMKV_PATH_SLASH + encodeFilePath(mmapID); + return MMKV_PATH_TYPE(ASHMEM_NAME_DEF) + MMKV_PATH_SLASH + encodeFilePath(mmapID); } else if (relativePath) { #endif return *relativePath + MMKV_PATH_SLASH + encodeFilePath(mmapID); @@ -1455,17 +1472,23 @@ string mappedKVPathWithID(const string &mmapID, MMKVMode mode, string *relativeP return g_rootDir + MMKV_PATH_SLASH + encodeFilePath(mmapID); } -string crcPathWithID(const string &mmapID, MMKVMode mode, string *relativePath) { +#ifndef MMKV_WIN32 +constexpr auto CRC_SUFFIX = ".crc"; +#else +constexpr auto CRC_SUFFIX = L".crc"; +#endif + +MMKV_PATH_TYPE crcPathWithID(const string &mmapID, MMKVMode mode, MMKV_PATH_TYPE *relativePath) { #ifndef MMKV_ANDROID if (relativePath) { #else if (mode & MMKV_ASHMEM) { - return encodeFilePath(mmapID) + ".crc"; + return encodeFilePath(mmapID) + CRC_SUFFIX; } else if (relativePath) { #endif - return *relativePath + MMKV_PATH_SLASH + encodeFilePath(mmapID) + ".crc"; + return *relativePath + MMKV_PATH_SLASH + encodeFilePath(mmapID) + CRC_SUFFIX; } - return g_rootDir + MMKV_PATH_SLASH + encodeFilePath(mmapID) + ".crc"; + return g_rootDir + MMKV_PATH_SLASH + encodeFilePath(mmapID) + CRC_SUFFIX; } static MMKVRecoverStrategic onMMKVCRCCheckFail(const string &mmapID) { diff --git a/Core/MMKV.h b/Core/MMKV.h index f67e9720..534c20f9 100644 --- a/Core/MMKV.h +++ b/Core/MMKV.h @@ -52,13 +52,13 @@ class MMKV { MMKV(const std::string &mmapID, MMKVMode mode, std::string *cryptKey, - std::string *relativePath); + MMKV_PATH_TYPE *relativePath); #else MMKV(const std::string &mmapID, int size, MMKVMode mode, std::string *cryptKey, - std::string *relativePath); + MMKV_PATH_TYPE *relativePath); MMKV(const std::string &mmapID, int ashmemFD, @@ -70,8 +70,8 @@ class MMKV { std::unordered_map m_dic; std::string m_mmapID; - std::string m_path; - std::string m_crcPath; + MMKV_PATH_TYPE m_path; + MMKV_PATH_TYPE m_crcPath; mmkv::MemoryFile m_file; size_t m_actualSize; @@ -135,7 +135,7 @@ class MMKV { public: // call this before getting any MMKV instance - static void initializeMMKV(const std::string &rootDir, MMKVLogLevel logLevel = MMKVLogInfo); + static void initializeMMKV(const MMKV_PATH_TYPE &rootDir, MMKVLogLevel logLevel = MMKVLogInfo); // a generic purpose instance static MMKV *defaultMMKV(MMKVMode mode = MMKV_SINGLE_PROCESS, std::string *cryptKey = nullptr); @@ -146,7 +146,7 @@ public: static MMKV *mmkvWithID(const std::string &mmapID, MMKVMode mode = MMKV_SINGLE_PROCESS, std::string *cryptKey = nullptr, - std::string *relativePath = nullptr); + MMKV_PATH_TYPE *relativePath = nullptr); #else // mmapID: any unique ID (com.tencent.xin.pay, etc) // if you want a per-user mmkv, you could merge user-id within mmapID @@ -154,7 +154,7 @@ public: int size = mmkv::DEFAULT_MMAP_SIZE, MMKVMode mode = MMKV_SINGLE_PROCESS, std::string *cryptKey = nullptr, - std::string *relativePath = nullptr); + MMKV_PATH_TYPE *relativePath = nullptr); static MMKV *mmkvWithAshmemFD(const std::string &mmapID, int fd, diff --git a/Core/MMKVMetaInfo.hpp b/Core/MMKVMetaInfo.hpp old mode 100644 new mode 100755 index e9ee25ba..e034bd8e --- a/Core/MMKVMetaInfo.hpp +++ b/Core/MMKVMetaInfo.hpp @@ -52,7 +52,7 @@ struct MMKVMetaInfo { struct { size_t lastActualSize = 0; uint32_t lastCRCDigest = 0; - uint32_t __reserved[16] = {0}; + uint32_t __reserved__[16] = {0}; } m_lastConfirmedMetaInfo; void write(void *ptr) { diff --git a/Core/MMKVPredef.h b/Core/MMKVPredef.h index fdafb47b..66600ecd 100644 --- a/Core/MMKVPredef.h +++ b/Core/MMKVPredef.h @@ -41,11 +41,32 @@ # define MMKV_WIN32 #endif +// TODO: fix later +#define MMKV_WIN32 + #ifdef MMKV_WIN32 -# define MMKV_PATH_SLASH "\\" +# if !defined(_WIN32_WINNT) +# define _WIN32_WINNT _WIN32_WINNT_WINXP +# endif + +# include + +# define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers \ + // Windows Header Files +# include + +constexpr auto MMKV_PATH_SLASH = L"\\"; +# define MMKV_PATH_FORMAT "%ws" +using MMKV_FILE_HANDLE = HANDLE; +using MMKV_PATH_TYPE = std::wstring; +extern MMKV_PATH_TYPE string2MMKV_PATH_TYPE(const std::string &str); #else -# define MMKV_PATH_SLASH "/" -#endif +constexpr auto MMKV_PATH_SLASH = "/"; +# define MMKV_PATH_FORMAT "%s" +using MMKV_FILE_HANDLE = int; +using MMKV_PATH_TYPE = std::string; +# define string2MMKV_PATH_TYPE(str) (str) +#endif // MMKV_WIN32 enum MMKVLogLevel : int { MMKVLogDebug = 0, // not available for release/product build diff --git a/Core/MMKV_Android.cpp b/Core/MMKV_Android.cpp index d0ca7dd6..01e4ed2a 100644 --- a/Core/MMKV_Android.cpp +++ b/Core/MMKV_Android.cpp @@ -19,8 +19,11 @@ */ #include "MMKV.h" -#include "ScopedLock.hpp" -#include + +#ifdef MMKV_ANDROID + +# include "ScopedLock.hpp" +# include using namespace std; using namespace mmkv; @@ -28,8 +31,6 @@ using namespace mmkv; extern unordered_map *g_instanceDic; extern ThreadLock g_instanceLock; -#ifdef MMKV_ANDROID - extern string mmapedKVKey(const string &mmapID, string *relativePath); extern string mappedKVPathWithID(const string &mmapID, MMKVMode mode, string *relativePath); extern string crcPathWithID(const string &mmapID, MMKVMode mode, string *relativePath); diff --git a/Core/MemoryFile.cpp b/Core/MemoryFile.cpp index ea1be1ee..0b2a938c 100644 --- a/Core/MemoryFile.cpp +++ b/Core/MemoryFile.cpp @@ -19,15 +19,18 @@ */ #include "MemoryFile.h" -#include "InterProcessLock.h" -#include "MMBuffer.h" -#include "MMKVLog.h" -#include "ScopedLock.hpp" -#include -#include -#include -#include -#include + +#ifndef MMKV_WIN32 + +# include "InterProcessLock.h" +# include "MMBuffer.h" +# include "MMKVLog.h" +# include "ScopedLock.hpp" +# include +# include +# include +# include +# include using namespace std; @@ -35,13 +38,14 @@ namespace mmkv { static bool getFileSize(int fd, size_t &size); -#ifdef MMKV_ANDROID +# ifdef MMKV_ANDROID extern size_t ASharedMemory_getSize(int fd); -#else -MemoryFile::MemoryFile(const string &path) : m_name(path), m_fd(-1), m_ptr(nullptr), m_size(0) { +# else +MemoryFile::MemoryFile(const MMKV_PATH_TYPE &path) + : m_name(path), m_fd(-1), m_ptr(nullptr), m_size(0) { reloadFromFile(); } -#endif +# endif bool MemoryFile::truncate(size_t size) { if (m_fd < 0) { @@ -50,7 +54,7 @@ bool MemoryFile::truncate(size_t size) { if (size == m_size) { return true; } -#ifdef MMKV_ANDROID +# ifdef MMKV_ANDROID if (m_fileType == MMFILE_TYPE_ASHMEM) { if (size > m_size) { MMKVError("ashmem %s reach size limit:%zu, consider configure with larger size", @@ -61,7 +65,7 @@ bool MemoryFile::truncate(size_t size) { } return false; } -#endif +# endif auto oldSize = m_size; m_size = size; @@ -89,7 +93,11 @@ bool MemoryFile::truncate(size_t size) { MMKVError("fail to munmap [%s], %s", m_name.c_str(), strerror(errno)); } } - return mmap(); + auto ret = mmap(); + if (!ret) { + doCleanMemoryCache(true); + } + return ret; } bool MemoryFile::msync(SyncFlag syncFlag) { @@ -115,11 +123,11 @@ bool MemoryFile::mmap() { } void MemoryFile::reloadFromFile() { -#ifdef MMKV_ANDROID +# ifdef MMKV_ANDROID if (m_fileType == MMFILE_TYPE_ASHMEM) { return; } -#endif +# endif if (isFileValid()) { MMKVWarning("calling reloadFromFile while the cache [%s] is still valid", m_name.c_str()); assert(0); @@ -149,11 +157,11 @@ void MemoryFile::reloadFromFile() { } void MemoryFile::doCleanMemoryCache(bool forceClean) { -#ifdef MMKV_ANDROID +# ifdef MMKV_ANDROID if (m_fileType == MMFILE_TYPE_ASHMEM && !forceClean) { return; } -#endif +# endif if (m_ptr && m_ptr != MAP_FAILED) { if (munmap(m_ptr, m_size) != 0) { MMKVError("fail to munmap [%s], %s", m_name.c_str(), strerror(errno)); @@ -171,18 +179,16 @@ void MemoryFile::doCleanMemoryCache(bool forceClean) { } size_t MemoryFile::getActualFileSize() { -#ifdef MMKV_ANDROID +# ifdef MMKV_ANDROID if (m_fileType == MMFILE_TYPE_ASHMEM) { return ASharedMemory_getSize(m_fd); } -#endif +# endif size_t size = 0; mmkv::getFileSize(m_fd, size); return size; } -#pragma mark - file - bool isFileExist(const string &nsFilePath) { if (nsFilePath.empty()) { return false; @@ -262,9 +268,9 @@ bool removeFile(const string &nsFilePath) { return true; } -MMBuffer *readWholeFile(const char *path) { +MMBuffer *readWholeFile(const MMKV_PATH_TYPE &path) { MMBuffer *buffer = nullptr; - int fd = open(path, O_RDONLY | O_CLOEXEC); + int fd = open(path.c_str(), O_RDONLY | O_CLOEXEC); if (fd >= 0) { auto fileLength = lseek(fd, 0, SEEK_END); if (fileLength > 0) { @@ -274,7 +280,7 @@ MMBuffer *readWholeFile(const char *path) { if (readSize != -1) { //fileSize = readSize; } else { - MMKVWarning("fail to read %s: %s", path, strerror(errno)); + MMKVWarning("fail to read %s: %s", path.c_str(), strerror(errno)); delete buffer; buffer = nullptr; @@ -282,7 +288,7 @@ MMBuffer *readWholeFile(const char *path) { } close(fd); } else { - MMKVWarning("fail to open %s: %s", path, strerror(errno)); + MMKVWarning("fail to open %s: %s", path.c_str(), strerror(errno)); } return buffer; } @@ -328,3 +334,5 @@ int getPageSize() { } } // namespace mmkv + +#endif // MMKV_WIN32 diff --git a/Core/MemoryFile.h b/Core/MemoryFile.h index 8b09a86f..316c58dc 100644 --- a/Core/MemoryFile.h +++ b/Core/MemoryFile.h @@ -40,8 +40,11 @@ enum FileType : bool { MMFILE_TYPE_FILE = false, MMFILE_TYPE_ASHMEM = true }; namespace mmkv { class MemoryFile { - std::string m_name; - int m_fd; + MMKV_PATH_TYPE m_name; + MMKV_FILE_HANDLE m_fd; +#ifdef MMKV_WIN32 + HANDLE m_fileMapping; +#endif void *m_ptr; size_t m_size; @@ -51,10 +54,10 @@ class MemoryFile { public: #ifndef MMKV_ANDROID - explicit MemoryFile(const std::string &path); + explicit MemoryFile(const MMKV_PATH_TYPE &path); #else - MemoryFile(const std::string &path, size_t size, FileType fileType); - explicit MemoryFile(int ashmemFD); + MemoryFile(const MMKV_PATH_TYPE &path, size_t size, FileType fileType); + explicit MemoryFile(MMKV_FILE_HANDLE ashmemFD); const FileType m_fileType; #endif @@ -68,9 +71,9 @@ public: void *getMemory() { return m_ptr; } - const std::string &getName() { return m_name; } + const MMKV_PATH_TYPE &getName() { return m_name; } - int getFd() { return m_fd; } + MMKV_FILE_HANDLE getFd() { return m_fd; } // the newly expanded file content will be zeroed bool truncate(size_t size); @@ -81,9 +84,13 @@ public: void reloadFromFile(); void clearMemoryCache() { doCleanMemoryCache(false); } - +#ifndef MMKV_WIN32 bool isFileValid() { return m_fd >= 0 && m_size > 0 && m_ptr; } - +#else + bool isFileValid() { + return m_fd != INVALID_HANDLE_VALUE && m_size > 0 && m_fileMapping && m_ptr; + } +#endif // just forbid it for possibly misuse MemoryFile(const MemoryFile &other) = delete; MemoryFile &operator=(const MemoryFile &other) = delete; @@ -91,14 +98,13 @@ public: class MMBuffer; -extern bool mkPath(char *path); -extern bool isFileExist(const std::string &nsFilePath); -extern bool removeFile(const std::string &nsFilePath); -extern MMBuffer *readWholeFile(const char *path); -extern bool zeroFillFile(int fd, size_t startPos, size_t size); -extern bool createFile(const std::string &filePath); +extern bool mkPath(const MMKV_PATH_TYPE &path); +extern bool isFileExist(const MMKV_PATH_TYPE &nsFilePath); +extern bool removeFile(const MMKV_PATH_TYPE &nsFilePath); +extern MMBuffer *readWholeFile(const MMKV_PATH_TYPE &path); +extern bool zeroFillFile(MMKV_FILE_HANDLE fd, size_t startPos, size_t size); +extern bool createFile(const MMKV_PATH_TYPE &filePath); extern int getPageSize(); - } // namespace mmkv #endif //MMKV_MAMERYFILE_H diff --git a/Core/MemoryFile_Android.cpp b/Core/MemoryFile_Android.cpp index 52a1c2af..ce5484d3 100644 --- a/Core/MemoryFile_Android.cpp +++ b/Core/MemoryFile_Android.cpp @@ -18,22 +18,23 @@ * limitations under the License. */ -#include "InterProcessLock.h" -#include "MMBuffer.h" -#include "MMKVLog.h" #include "MemoryFile.h" -#include "ScopedLock.hpp" -#include -#include -#include -#include -#include + +#ifdef MMKV_ANDROID +# include "InterProcessLock.h" +# include "MMBuffer.h" +# include "MMKVLog.h" +# include "ScopedLock.hpp" +# include +# include +# include +# include +# include using namespace std; namespace mmkv { -#ifdef MMKV_ANDROID // for Android Q limiting ashmem access extern int ASharedMemory_create(const char *name, size_t size); extern size_t ASharedMemory_getSize(int fd); @@ -74,10 +75,10 @@ MemoryFile::MemoryFile(int ashmemFD) } } -#endif - } // namespace mmkv +#endif + #ifdef MMKV_ANDROID # pragma mark - ashmem # include diff --git a/Core/MemoryFile_Win32.cpp b/Core/MemoryFile_Win32.cpp new file mode 100644 index 00000000..07fbbb0c --- /dev/null +++ b/Core/MemoryFile_Win32.cpp @@ -0,0 +1,358 @@ +/* + * Tencent is pleased to support the open source community by making + * MMKV available. + * + * Copyright (C) 2018 THL A29 Limited, a Tencent company. + * All rights reserved. + * + * Licensed under the BSD 3-Clause License (the "License"); you may not use + * this file except in compliance with the License. You may obtain a copy of + * the License at + * + * https://opensource.org/licenses/BSD-3-Clause + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "InterProcessLock.h" +#include "MMBuffer.h" +#include "MMKVLog.h" +#include "MemoryFile.h" +#include "ScopedLock.hpp" + +using namespace std; + +#ifdef MMKV_WIN32 + +namespace mmkv { + +static bool getFileSize(MMKV_FILE_HANDLE fd, size_t &size); +static bool ftruncate(MMKV_FILE_HANDLE file, size_t size); + +MemoryFile::MemoryFile(const MMKV_PATH_TYPE &path) + : m_name(path), m_fd(INVALID_HANDLE_VALUE), m_fileMapping(nullptr), m_ptr(nullptr), m_size(0) { + reloadFromFile(); +} + +bool MemoryFile::truncate(size_t size) { + if (m_fd < 0) { + return false; + } + if (size == m_size) { + return true; + } + + auto oldSize = m_size; + m_size = size; + // round up to (n * pagesize) + if (m_size < DEFAULT_MMAP_SIZE || (m_size % DEFAULT_MMAP_SIZE != 0)) { + m_size = ((m_size / DEFAULT_MMAP_SIZE) + 1) * DEFAULT_MMAP_SIZE; + } + + if (!ftruncate(m_fd, m_size)) { + MMKVError("fail to truncate [%ws] to size %zu", m_name.c_str(), m_size); + m_size = oldSize; + return false; + } + if (m_size > oldSize) { + if (!zeroFillFile(m_fd, oldSize, m_size - oldSize)) { + MMKVError("fail to zeroFile [%ws] to size %zu", m_name.c_str(), m_size); + m_size = oldSize; + return false; + } + } + + if (m_ptr) { + if (!UnmapViewOfFile(m_ptr)) { + MMKVError("fail to munmap [%ws], %d", m_name.c_str(), GetLastError()); + } + m_ptr = nullptr; + } + if (m_fileMapping) { + CloseHandle(m_fileMapping); + m_fileMapping = nullptr; + } + auto ret = mmap(); + if (!ret) { + doCleanMemoryCache(true); + } + return ret; +} + +bool MemoryFile::msync(SyncFlag syncFlag) { + if (m_ptr) { + if (FlushViewOfFile(m_ptr, m_size)) { + if (syncFlag == MMKV_SYNC) { + if (!FlushFileBuffers(m_fd)) { + MMKVError("fail to FlushFileBuffers [%ws]:%d", m_name.c_str(), GetLastError()); + return false; + } + } + return true; + } + MMKVError("fail to FlushViewOfFile [%ws]:%d", m_name.c_str(), GetLastError()); + return false; + } + return false; +} + +bool MemoryFile::mmap() { + m_fileMapping = CreateFileMapping(m_fd, nullptr, PAGE_READWRITE, 0, 0, nullptr); + if (!m_fileMapping) { + MMKVError("fail to CreateFileMapping [%ws], %d", m_name.c_str(), GetLastError()); + return false; + } else { + m_ptr = (char *) MapViewOfFile(m_fileMapping, FILE_MAP_ALL_ACCESS, 0, 0, 0); + if (!m_ptr) { + MMKVError("fail to mmap [%ws], %d", m_name.c_str(), GetLastError()); + return false; + } + } + + return true; +} + +void MemoryFile::reloadFromFile() { + if (isFileValid()) { + MMKVWarning("calling reloadFromFile while the cache [%ws] is still valid", m_name.c_str()); + assert(0); + clearMemoryCache(); + } + + m_fd = CreateFile(m_name.c_str(), GENERIC_READ | GENERIC_WRITE, + FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, nullptr, OPEN_ALWAYS, + FILE_ATTRIBUTE_NORMAL, nullptr); + if (m_fd == INVALID_HANDLE_VALUE) { + MMKVError("fail to open:%ws, %d", m_name.c_str(), GetLastError()); + } else { + FileLock fileLock(m_fd); + InterProcessLock lock(&fileLock, ExclusiveLockType); + SCOPEDLOCK(lock); + + mmkv::getFileSize(m_fd, m_size); + // round up to (n * pagesize) + if (m_size < DEFAULT_MMAP_SIZE || (m_size % DEFAULT_MMAP_SIZE != 0)) { + size_t roundSize = ((m_size / DEFAULT_MMAP_SIZE) + 1) * DEFAULT_MMAP_SIZE; + truncate(roundSize); + } else { + auto ret = mmap(); + if (!ret) { + doCleanMemoryCache(true); + } + } + } +} + +void MemoryFile::doCleanMemoryCache(bool forceClean) { + if (m_ptr) { + UnmapViewOfFile(m_ptr); + m_ptr = nullptr; + } + if (m_fileMapping) { + CloseHandle(m_fileMapping); + m_fileMapping = nullptr; + } + if (m_fd != INVALID_HANDLE_VALUE) { + CloseHandle(m_fd); + m_fd = INVALID_HANDLE_VALUE; + } +} + +size_t MemoryFile::getActualFileSize() { + size_t size = 0; + mmkv::getFileSize(m_fd, size); + return size; +} + +int getPageSize() { + SYSTEM_INFO system_info; + GetSystemInfo(&system_info); + return system_info.dwPageSize; +} + +bool isFileExist(const MMKV_PATH_TYPE &nsFilePath) { + if (nsFilePath.empty()) { + return false; + } + auto attribute = GetFileAttributes(nsFilePath.c_str()); + return (attribute != INVALID_FILE_ATTRIBUTES); +} + +bool mkPath(const MMKV_PATH_TYPE &str) { + wchar_t *path = _wcsdup(str.c_str()); + + bool done = false; + wchar_t *slash = path; + + while (!done) { + slash += wcsspn(slash, L"\\"); + slash += wcscspn(slash, L"\\"); + + done = (*slash == L'\0'); + *slash = L'\0'; + + auto attribute = GetFileAttributes(path); + if (attribute == INVALID_FILE_ATTRIBUTES) { + if (!CreateDirectory(path, nullptr)) { + MMKVError("fail to create dir:%ws, %d", str.c_str(), GetLastError()); + delete[] path; + return false; + } + } else if (!(attribute & FILE_ATTRIBUTE_DIRECTORY)) { + MMKVError("%ws attribute:%d not a directry", str.c_str(), attribute); + delete[] path; + return false; + } + + *slash = L'\\'; + } + free(path); + return true; +} + +bool removeFile(const MMKV_PATH_TYPE &nsFilePath) { + if (!DeleteFile(nsFilePath.c_str())) { + MMKVError("remove file failed. filePath=%ws, %d", nsFilePath.c_str(), GetLastError()); + return false; + } + return true; +} + +extern bool createFile(const MMKV_PATH_TYPE &filePath) { + bool ret = false; + + // try create at once + auto fd = CreateFile(filePath.c_str(), GENERIC_READ | GENERIC_WRITE, + FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, nullptr, + OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, nullptr); + if (fd != INVALID_HANDLE_VALUE) { + CloseHandle(fd); + ret = true; + } else { + // create parent dir + wchar_t *path = _wcsdup(filePath.c_str()); + if (!path) { + return false; + } + auto ptr = wcsrchr(path, L'\\'); + if (ptr) { + *ptr = L'\0'; + } + if (mkPath(path)) { + // try again + fd = CreateFile(filePath.c_str(), GENERIC_READ | GENERIC_WRITE, + FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, nullptr, + OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, nullptr); + if (fd != INVALID_HANDLE_VALUE) { + CloseHandle(fd); + ret = true; + } else { + MMKVWarning("fail to create file %ws, %d", filePath.c_str(), GetLastError()); + } + } + free(path); + } + return ret; +} + +MMBuffer *readWholeFile(const MMKV_PATH_TYPE &nsFilePath) { + MMBuffer *buffer = nullptr; + auto fd = CreateFile(nsFilePath.c_str(), GENERIC_READ | GENERIC_WRITE, + FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, nullptr, + OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, nullptr); + if (fd != INVALID_HANDLE_VALUE) { + size_t fileLength = 0; + getFileSize(fd, fileLength); + if (fileLength > 0) { + buffer = new MMBuffer(static_cast(fileLength)); + SetFilePointer(fd, 0, 0, FILE_BEGIN); + DWORD readSize = 0; + if (ReadFile(fd, buffer->getPtr(), fileLength, &readSize, nullptr)) { + //fileSize = readSize; + } else { + MMKVWarning("fail to read %ws: %d", nsFilePath.c_str(), GetLastError()); + delete buffer; + buffer = nullptr; + } + } + CloseHandle(fd); + } else { + MMKVWarning("fail to open %ws: %d", nsFilePath.c_str(), GetLastError()); + } + return buffer; +} + +bool zeroFillFile(MMKV_FILE_HANDLE file, size_t startPos, size_t size) { + if (file == INVALID_HANDLE_VALUE) { + return false; + } + if (size == 0) { + return true; + } + + LARGE_INTEGER position; + position.QuadPart = startPos; + if (!SetFilePointerEx(file, position, nullptr, FILE_BEGIN)) { + MMKVError("fail to lseek fd[%p], error:%d", file, GetLastError()); + return false; + } + + static const char zeros[4096] = {0}; + while (size >= sizeof(zeros)) { + DWORD bytesWritten = 0; + if (!WriteFile(file, zeros, sizeof(zeros), &bytesWritten, nullptr)) { + MMKVError("fail to write fd[%p], error:%d", file, GetLastError()); + return false; + } + size -= bytesWritten; + } + if (size > 0) { + DWORD bytesWritten = 0; + if (!WriteFile(file, zeros, size, &bytesWritten, nullptr)) { + MMKVError("fail to write fd[%p], error:%d", file, GetLastError()); + return false; + } + } + return true; +} + +static bool ftruncate(MMKV_FILE_HANDLE file, size_t size) { + LARGE_INTEGER large; + large.QuadPart = size; + if (SetFilePointerEx(file, large, 0, FILE_BEGIN)) { + if (SetEndOfFile(file)) { + return true; + } + MMKVError("fail to SetEndOfFile:%d", GetLastError()); + return false; + } else { + MMKVError("fail to SetFilePointer:%d", GetLastError()); + return false; + } +} + +static bool getFileSize(MMKV_FILE_HANDLE fd, size_t &size) { + LARGE_INTEGER filesize = {0}; + if (GetFileSizeEx(fd, &filesize)) { + size = static_cast(filesize.QuadPart); + return true; + } + return false; +} + +} // namespace mmkv + +std::wstring string2MMKV_PATH_TYPE(const std::string &str) { + auto length = MultiByteToWideChar(CP_UTF8, 0, str.c_str(), -1, nullptr, 0); + auto buffer = new wchar_t[length]; + MultiByteToWideChar(CP_UTF8, 0, str.c_str(), -1, buffer, length); + wstring result(buffer); + delete[] buffer; + return result; +} + +#endif // MMKV_WIN32 diff --git a/Core/MiniPBCoder.cpp b/Core/MiniPBCoder.cpp old mode 100644 new mode 100755 index 0927b359..6ff2ee70 --- a/Core/MiniPBCoder.cpp +++ b/Core/MiniPBCoder.cpp @@ -53,7 +53,7 @@ MiniPBCoder::MiniPBCoder(const MMBuffer *inputBuffer) : MiniPBCoder() { new CodedInputData(m_inputBuffer->getPtr(), static_cast(m_inputBuffer->length())); } -#pragma mark - encode +// encode // write object using prepared m_encodeItems[] void MiniPBCoder::writeRootObject() { @@ -220,7 +220,7 @@ MMBuffer MiniPBCoder::getEncodeData(const unordered_map &map) return std::move(*m_outputBuffer); } -#pragma mark - decode +// decode string MiniPBCoder::decodeOneString() { return m_inputData->readString(); diff --git a/Core/PBUtility.h b/Core/PBUtility.h index 0b73b8ec..1ac6bd39 100644 --- a/Core/PBUtility.h +++ b/Core/PBUtility.h @@ -21,11 +21,20 @@ #ifndef MMKV_PBUTILITY_H #define MMKV_PBUTILITY_H +#include "MMKVPredef.h" + #include -#ifndef likely -# define unlikely(x) (__builtin_expect(bool(x), 0)) -# define likely(x) (__builtin_expect(bool(x), 1)) +#ifndef MMKV_WIN32 +# ifndef likely +# define unlikely(x) (__builtin_expect(bool(x), 0)) +# define likely(x) (__builtin_expect(bool(x), 1)) +# endif +#else +# ifndef likely +# define unlikely(x) (x) +# define likely(x) (x) +# endif #endif namespace mmkv { diff --git a/Core/ThreadLock.cpp b/Core/ThreadLock.cpp index 86b976e4..12a3ada3 100644 --- a/Core/ThreadLock.cpp +++ b/Core/ThreadLock.cpp @@ -34,7 +34,7 @@ static pid_t gettid() { using namespace std; namespace mmkv { - +#if MMKV_USING_PTHREAD ThreadLock::ThreadLock() { pthread_mutexattr_t attr; pthread_mutexattr_init(&attr); @@ -49,6 +49,8 @@ ThreadLock::~ThreadLock() { pthread_mutex_destroy(&m_lock); } +void ThreadLock::initialize() {} + void ThreadLock::lock() { auto ret = pthread_mutex_lock(&m_lock); if (ret != 0) { @@ -70,6 +72,33 @@ void ThreadLock::unlock() { MMKVError("fail to unlock %p, ret=%d, errno=%s", &m_lock, ret, strerror(errno)); } } +#else +ThreadLock::ThreadLock() : m_lock{0} {} + +ThreadLock::~ThreadLock() { + DeleteCriticalSection(&m_lock); +} + +void ThreadLock::initialize() { + // TODO: a better spin count? + if (!InitializeCriticalSectionAndSpinCount(&m_lock, 1024)) { + MMKVError("fail to init critical section:%d", GetLastError()); + } +} + +void ThreadLock::lock() { + EnterCriticalSection(&m_lock); +} + +bool ThreadLock::try_lock() { + auto ret = TryEnterCriticalSection(&m_lock); + return ret != 0; +} + +void ThreadLock::unlock() { + LeaveCriticalSection(&m_lock); +} +#endif #if MMKV_USING_PTHREAD void ThreadLock::ThreadOnce(ThreadOnceToken *onceToken, void (*callback)()) { @@ -89,6 +118,18 @@ static uint64_t gettid() { # endif } # endif +void ThreadLock::Sleep(int ms) { + constexpr auto MILLI_SECOND_MULTIPLIER = 1000; + constexpr auto NANO_SECOND_MULTIPLIER = MILLI_SECOND_MULTIPLIER * MILLI_SECOND_MULTIPLIER; + timespec duration = {0}; + if (ms > 999) { + duration.tv_sec = ms / MILLI_SECOND_MULTIPLIER; + duration.tv_nsec = (ms % MILLI_SECOND_MULTIPLIER) * NANO_SECOND_MULTIPLIER; + } else { + duration.tv_nsec = ms * NANO_SECOND_MULTIPLIER; + } + nanosleep(&duration, nullptr); +} #else void ThreadLock::ThreadOnce(ThreadOnceToken *onceToken, void (*callback)()) { if (!onceToken || !callback) { @@ -108,7 +149,7 @@ void ThreadLock::ThreadOnce(ThreadOnceToken *onceToken, void (*callback)()) { return; case ThreadOnceInitializing: { // another thread is initializing, let's wait for 1ms - Sleep(1); + ThreadLock::Sleep(1); break; } default: { @@ -121,16 +162,7 @@ void ThreadLock::ThreadOnce(ThreadOnceToken *onceToken, void (*callback)()) { } void ThreadLock::Sleep(int ms) { - constexpr auto MILLI_SECOND_MULTIPLIER = 1000; - constexpr auto NANO_SECOND_MULTIPLIER = MILLI_SECOND_MULTIPLIER * MILLI_SECOND_MULTIPLIER; - timespec duration = {0}; - if (ms > 999) { - duration.tv_sec = ms / MILLI_SECOND_MULTIPLIER; - duration.tv_nsec = (ms % MILLI_SECOND_MULTIPLIER) * NANO_SECOND_MULTIPLIER; - } else { - duration.tv_nsec = ms * NANO_SECOND_MULTIPLIER; - } - nanosleep(&duration, nullptr); + ::Sleep(ms); } #endif diff --git a/Core/ThreadLock.h b/Core/ThreadLock.h index d0ae9edf..f4031681 100644 --- a/Core/ThreadLock.h +++ b/Core/ThreadLock.h @@ -49,16 +49,18 @@ typedef std::atomic ThreadOnceToken; class ThreadLock { private: - //#if MMKV_USING_PTHREAD +#if MMKV_USING_PTHREAD pthread_mutex_t m_lock; - //#else - // CRITICAL_SECTION m_lock; - //#endif +#else + CRITICAL_SECTION m_lock; +#endif public: ThreadLock(); ~ThreadLock(); + void initialize(); + void lock(); bool try_lock(); void unlock(); diff --git a/Core/core.vcxproj b/Core/core.vcxproj new file mode 100755 index 00000000..9ee7e63e --- /dev/null +++ b/Core/core.vcxproj @@ -0,0 +1,380 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + MinSizeRel + Win32 + + + RelWithDebInfo + Win32 + + + + {32CD39C9-37B5-3D38-A3D9-45E13F4AF9C5} + 10.0.17763.0 + Win32Proj + Win32 + core + NoUpgrade + + + + StaticLibrary + Unicode + v140 + + + StaticLibrary + Unicode + v140 + + + StaticLibrary + Unicode + v140 + + + StaticLibrary + Unicode + v140 + + + + + + + + + + <_ProjectFileVersion>10.0.20506.1 + $(SolutionDir)$(Configuration)\ + $(Configuration)\ + mmkv + .lib + $(SolutionDir)$(Configuration)\ + $(Configuration)\ + mmkv + .lib + $(SolutionDir)$(Configuration)\ + $(Configuration)\ + mmkv + .lib + $(SolutionDir)$(Configuration)\ + $(Configuration)\ + mmkv + .lib + + + + Z:\mmkv\Core;%(AdditionalIncludeDirectories) + %(AdditionalOptions) -std:c++latest + Debug/ + EnableFastChecks + CompileAsCpp + ProgramDatabase + Sync + Disabled + Disabled + NotUsing + MultiThreadedDebug + true + Level3 + WIN32;_WINDOWS;CMAKE_INTDIR="Debug";%(PreprocessorDefinitions) + $(IntDir) + + + WIN32;_DEBUG;_WINDOWS;CMAKE_INTDIR=\"Debug\";%(PreprocessorDefinitions) + Z:\mmkv\Core;%(AdditionalIncludeDirectories) + + + Z:\mmkv\Core;%(AdditionalIncludeDirectories) + $(ProjectDir)/$(IntDir) + %(Filename).h + %(Filename).tlb + %(Filename)_i.c + %(Filename)_p.c + + + %(AdditionalOptions) /machine:X86 + + + for %%f in ("$(ProjectDir)MMKV.h", "$(ProjectDir)InterProcessLock.h", "$(ProjectDir)MmapedFile.h", "$(ProjectDir)MMKVMetaInfo.hpp", "$(ProjectDir)ThreadLock.h", "$(ProjectDir)MMBuffer.h", "$(ProjectDir)MMKVPredef.h", "$(ProjectDir)MemoryFile.h") do xcopy /y /i %%f "$(OutDir)\include\MMKV\" +for %%f in ("$(ProjectDir)aes\AESCrypt.h") do xcopy /y /i %%f "$(OutDir)\include\MMKV\aes\" +for %%f in ("$(ProjectDir)aes\openssl\aes.h", "$(ProjectDir)aes\openssl\opensslconf.h") do xcopy /y /i %%f "$(OutDir)\include\MMKV\aes\openssl\" + + + Copying Headers + + + + + Z:\mmkv\Core;%(AdditionalIncludeDirectories) + %(AdditionalOptions) -std:c++latest + Release/ + CompileAsCpp + Sync + AnySuitable + MaxSpeed + NotUsing + MultiThreaded + true + Level3 + WIN32;_WINDOWS;NDEBUG;CMAKE_INTDIR="Release";%(PreprocessorDefinitions) + $(IntDir) + + + + + WIN32;_WINDOWS;NDEBUG;CMAKE_INTDIR=\"Release\";%(PreprocessorDefinitions) + Z:\mmkv\Core;%(AdditionalIncludeDirectories) + + + Z:\mmkv\Core;%(AdditionalIncludeDirectories) + $(ProjectDir)/$(IntDir) + %(Filename).h + %(Filename).tlb + %(Filename)_i.c + %(Filename)_p.c + + + %(AdditionalOptions) /machine:X86 + + + for %%f in ("$(ProjectDir)MMKV.h", "$(ProjectDir)InterProcessLock.h", "$(ProjectDir)MmapedFile.h", "$(ProjectDir)MMKVMetaInfo.hpp", "$(ProjectDir)ThreadLock.h", "$(ProjectDir)MMBuffer.h", "$(ProjectDir)MMKVPredef.h", "$(ProjectDir)MemoryFile.h") do xcopy /y /i %%f "$(OutDir)\include\MMKV\" +for %%f in ("$(ProjectDir)aes\AESCrypt.h") do xcopy /y /i %%f "$(OutDir)\include\MMKV\aes\" +for %%f in ("$(ProjectDir)aes\openssl\aes.h", "$(ProjectDir)aes\openssl\opensslconf.h") do xcopy /y /i %%f "$(OutDir)\include\MMKV\aes\openssl\" + + + Copying Headers + + + + + Z:\mmkv\Core;%(AdditionalIncludeDirectories) + %(AdditionalOptions) -std:c++latest + MinSizeRel/ + CompileAsCpp + Sync + OnlyExplicitInline + MinSpace + NotUsing + MultiThreadedDLL + true + Level3 + WIN32;_WINDOWS;NDEBUG;CMAKE_INTDIR="MinSizeRel";%(PreprocessorDefinitions) + $(IntDir) + + + + + WIN32;_WINDOWS;NDEBUG;CMAKE_INTDIR=\"MinSizeRel\";%(PreprocessorDefinitions) + Z:\mmkv\Core;%(AdditionalIncludeDirectories) + + + Z:\mmkv\Core;%(AdditionalIncludeDirectories) + $(ProjectDir)/$(IntDir) + %(Filename).h + %(Filename).tlb + %(Filename)_i.c + %(Filename)_p.c + + + %(AdditionalOptions) /machine:X86 + + + for %%f in ("$(ProjectDir)MMKV.h", "$(ProjectDir)InterProcessLock.h", "$(ProjectDir)MmapedFile.h", "$(ProjectDir)MMKVMetaInfo.hpp", "$(ProjectDir)ThreadLock.h", "$(ProjectDir)MMBuffer.h", "$(ProjectDir)MMKVPredef.h", "$(ProjectDir)MemoryFile.h") do xcopy /y /i %%f "$(OutDir)\include\MMKV\" +for %%f in ("$(ProjectDir)aes\AESCrypt.h") do xcopy /y /i %%f "$(OutDir)\include\MMKV\aes\" +for %%f in ("$(ProjectDir)aes\openssl\aes.h", "$(ProjectDir)aes\openssl\opensslconf.h") do xcopy /y /i %%f "$(OutDir)\include\MMKV\aes\openssl\" + + + Copying Headers + + + + + Z:\mmkv\Core;%(AdditionalIncludeDirectories) + %(AdditionalOptions) -std:c++latest + RelWithDebInfo/ + CompileAsCpp + ProgramDatabase + Sync + OnlyExplicitInline + MaxSpeed + NotUsing + MultiThreadedDLL + true + Level3 + WIN32;_WINDOWS;NDEBUG;CMAKE_INTDIR="RelWithDebInfo";%(PreprocessorDefinitions) + $(IntDir) + + + WIN32;_WINDOWS;NDEBUG;CMAKE_INTDIR=\"RelWithDebInfo\";%(PreprocessorDefinitions) + Z:\mmkv\Core;%(AdditionalIncludeDirectories) + + + Z:\mmkv\Core;%(AdditionalIncludeDirectories) + $(ProjectDir)/$(IntDir) + %(Filename).h + %(Filename).tlb + %(Filename)_i.c + %(Filename)_p.c + + + %(AdditionalOptions) /machine:X86 + + + for %%f in ("$(ProjectDir)MMKV.h", "$(ProjectDir)InterProcessLock.h", "$(ProjectDir)MmapedFile.h", "$(ProjectDir)MMKVMetaInfo.hpp", "$(ProjectDir)ThreadLock.h", "$(ProjectDir)MMBuffer.h", "$(ProjectDir)MMKVPredef.h", "$(ProjectDir)MemoryFile.h") do xcopy /y /i %%f "$(OutDir)\include\MMKV\" +for %%f in ("$(ProjectDir)aes\AESCrypt.h") do xcopy /y /i %%f "$(OutDir)\include\MMKV\aes\" +for %%f in ("$(ProjectDir)aes\openssl\aes.h", "$(ProjectDir)aes\openssl\opensslconf.h") do xcopy /y /i %%f "$(OutDir)\include\MMKV\aes\openssl\" + + + Copying Headers + + + + + Building Custom Rule Z:/mmkv/Core/CMakeLists.txt + setlocal +"C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe" -HZ:/mmkv/Core -BZ:/mmkv/Core --check-stamp-file Z:/mmkv/Core/CMakeFiles/generate.stamp +if %errorlevel% neq 0 goto :cmEnd +:cmEnd +endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone +:cmErrorLevel +exit /b %1 +:cmDone +if %errorlevel% neq 0 goto :VCEnd + Z:/mmkv/Core/CMakeLists.txt;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeCCompiler.cmake.in;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeCCompilerABI.c;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeCInformation.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeCXXCompiler.cmake.in;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeCXXCompilerABI.cpp;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeCXXInformation.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeCommonLanguageInclude.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeCompilerIdDetection.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeDetermineCCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeDetermineCXXCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeDetermineCompileFeatures.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeDetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeDetermineCompilerABI.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeDetermineCompilerId.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeDetermineRCCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeDetermineSystem.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeFindBinUtils.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeGenericSystem.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeInitializeConfigs.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeLanguageInformation.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeParseImplicitLinkInfo.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeRCCompiler.cmake.in;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeRCInformation.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeSystem.cmake.in;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeSystemSpecificInformation.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeSystemSpecificInitialize.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeTestCCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeTestCXXCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeTestCompilerCommon.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeTestRCCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\ADSP-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\ARMCC-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\AppleClang-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\Borland-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\Bruce-C-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\CMakeCommonCompilerMacros.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\Clang-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\Clang-DetermineCompilerInternal.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\Comeau-CXX-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\Compaq-C-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\Compaq-CXX-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\Cray-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\Embarcadero-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\Fujitsu-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\GHS-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\GNU-C-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\GNU-CXX-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\HP-C-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\HP-CXX-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\IAR-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\IBMCPP-C-DetermineVersionInternal.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\IBMCPP-CXX-DetermineVersionInternal.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\Intel-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\MIPSpro-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\MSVC-C-FeatureTests.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\MSVC-C.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\MSVC-CXX-FeatureTests.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\MSVC-CXX.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\MSVC-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\NVIDIA-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\OpenWatcom-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\PGI-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\PathScale-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\SCO-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\SDCC-C-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\SunPro-C-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\SunPro-CXX-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\TI-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\TinyCC-C-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\VisualAge-C-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\VisualAge-CXX-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\Watcom-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\XL-C-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\XL-CXX-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\zOS-C-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\zOS-CXX-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CompilerId\VS-10.vcxproj.in;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Internal\FeatureTesting.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Platform\Windows-Determine-CXX.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Platform\Windows-MSVC-C.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Platform\Windows-MSVC-CXX.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Platform\Windows-MSVC.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Platform\Windows.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Platform\WindowsPaths.cmake;Z:\mmkv\Core\CMakeFiles\3.12.18081601-MSVC_2\CMakeCCompiler.cmake;Z:\mmkv\Core\CMakeFiles\3.12.18081601-MSVC_2\CMakeCXXCompiler.cmake;Z:\mmkv\Core\CMakeFiles\3.12.18081601-MSVC_2\CMakeRCCompiler.cmake;Z:\mmkv\Core\CMakeFiles\3.12.18081601-MSVC_2\CMakeSystem.cmake;Z:\mmkv\Core\CMakeFiles\feature_tests.c;Z:\mmkv\Core\CMakeFiles\feature_tests.cxx;Z:\mmkv\Core\CMakeLists.txt;Z:\mmkv\Core\CMakeLists.txt;%(AdditionalInputs) + Z:\mmkv\Core\CMakeFiles\generate.stamp + false + Building Custom Rule Z:/mmkv/Core/CMakeLists.txt + setlocal +"C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe" -HZ:/mmkv/Core -BZ:/mmkv/Core --check-stamp-file Z:/mmkv/Core/CMakeFiles/generate.stamp +if %errorlevel% neq 0 goto :cmEnd +:cmEnd +endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone +:cmErrorLevel +exit /b %1 +:cmDone +if %errorlevel% neq 0 goto :VCEnd + Z:/mmkv/Core/CMakeLists.txt;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeCCompiler.cmake.in;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeCCompilerABI.c;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeCInformation.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeCXXCompiler.cmake.in;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeCXXCompilerABI.cpp;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeCXXInformation.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeCommonLanguageInclude.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeCompilerIdDetection.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeDetermineCCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeDetermineCXXCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeDetermineCompileFeatures.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeDetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeDetermineCompilerABI.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeDetermineCompilerId.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeDetermineRCCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeDetermineSystem.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeFindBinUtils.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeGenericSystem.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeInitializeConfigs.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeLanguageInformation.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeParseImplicitLinkInfo.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeRCCompiler.cmake.in;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeRCInformation.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeSystem.cmake.in;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeSystemSpecificInformation.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeSystemSpecificInitialize.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeTestCCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeTestCXXCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeTestCompilerCommon.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeTestRCCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\ADSP-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\ARMCC-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\AppleClang-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\Borland-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\Bruce-C-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\CMakeCommonCompilerMacros.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\Clang-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\Clang-DetermineCompilerInternal.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\Comeau-CXX-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\Compaq-C-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\Compaq-CXX-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\Cray-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\Embarcadero-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\Fujitsu-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\GHS-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\GNU-C-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\GNU-CXX-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\HP-C-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\HP-CXX-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\IAR-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\IBMCPP-C-DetermineVersionInternal.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\IBMCPP-CXX-DetermineVersionInternal.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\Intel-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\MIPSpro-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\MSVC-C-FeatureTests.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\MSVC-C.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\MSVC-CXX-FeatureTests.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\MSVC-CXX.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\MSVC-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\NVIDIA-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\OpenWatcom-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\PGI-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\PathScale-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\SCO-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\SDCC-C-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\SunPro-C-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\SunPro-CXX-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\TI-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\TinyCC-C-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\VisualAge-C-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\VisualAge-CXX-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\Watcom-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\XL-C-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\XL-CXX-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\zOS-C-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\zOS-CXX-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CompilerId\VS-10.vcxproj.in;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Internal\FeatureTesting.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Platform\Windows-Determine-CXX.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Platform\Windows-MSVC-C.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Platform\Windows-MSVC-CXX.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Platform\Windows-MSVC.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Platform\Windows.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Platform\WindowsPaths.cmake;Z:\mmkv\Core\CMakeFiles\3.12.18081601-MSVC_2\CMakeCCompiler.cmake;Z:\mmkv\Core\CMakeFiles\3.12.18081601-MSVC_2\CMakeCXXCompiler.cmake;Z:\mmkv\Core\CMakeFiles\3.12.18081601-MSVC_2\CMakeRCCompiler.cmake;Z:\mmkv\Core\CMakeFiles\3.12.18081601-MSVC_2\CMakeSystem.cmake;Z:\mmkv\Core\CMakeFiles\feature_tests.c;Z:\mmkv\Core\CMakeFiles\feature_tests.cxx;Z:\mmkv\Core\CMakeLists.txt;Z:\mmkv\Core\CMakeLists.txt;%(AdditionalInputs) + Z:\mmkv\Core\CMakeFiles\generate.stamp + false + Building Custom Rule Z:/mmkv/Core/CMakeLists.txt + setlocal +"C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe" -HZ:/mmkv/Core -BZ:/mmkv/Core --check-stamp-file Z:/mmkv/Core/CMakeFiles/generate.stamp +if %errorlevel% neq 0 goto :cmEnd +:cmEnd +endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone +:cmErrorLevel +exit /b %1 +:cmDone +if %errorlevel% neq 0 goto :VCEnd + Z:/mmkv/Core/CMakeLists.txt;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeCCompiler.cmake.in;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeCCompilerABI.c;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeCInformation.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeCXXCompiler.cmake.in;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeCXXCompilerABI.cpp;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeCXXInformation.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeCommonLanguageInclude.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeCompilerIdDetection.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeDetermineCCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeDetermineCXXCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeDetermineCompileFeatures.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeDetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeDetermineCompilerABI.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeDetermineCompilerId.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeDetermineRCCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeDetermineSystem.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeFindBinUtils.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeGenericSystem.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeInitializeConfigs.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeLanguageInformation.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeParseImplicitLinkInfo.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeRCCompiler.cmake.in;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeRCInformation.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeSystem.cmake.in;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeSystemSpecificInformation.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeSystemSpecificInitialize.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeTestCCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeTestCXXCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeTestCompilerCommon.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeTestRCCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\ADSP-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\ARMCC-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\AppleClang-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\Borland-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\Bruce-C-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\CMakeCommonCompilerMacros.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\Clang-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\Clang-DetermineCompilerInternal.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\Comeau-CXX-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\Compaq-C-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\Compaq-CXX-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\Cray-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\Embarcadero-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\Fujitsu-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\GHS-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\GNU-C-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\GNU-CXX-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\HP-C-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\HP-CXX-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\IAR-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\IBMCPP-C-DetermineVersionInternal.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\IBMCPP-CXX-DetermineVersionInternal.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\Intel-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\MIPSpro-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\MSVC-C-FeatureTests.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\MSVC-C.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\MSVC-CXX-FeatureTests.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\MSVC-CXX.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\MSVC-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\NVIDIA-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\OpenWatcom-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\PGI-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\PathScale-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\SCO-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\SDCC-C-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\SunPro-C-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\SunPro-CXX-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\TI-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\TinyCC-C-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\VisualAge-C-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\VisualAge-CXX-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\Watcom-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\XL-C-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\XL-CXX-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\zOS-C-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\zOS-CXX-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CompilerId\VS-10.vcxproj.in;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Internal\FeatureTesting.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Platform\Windows-Determine-CXX.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Platform\Windows-MSVC-C.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Platform\Windows-MSVC-CXX.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Platform\Windows-MSVC.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Platform\Windows.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Platform\WindowsPaths.cmake;Z:\mmkv\Core\CMakeFiles\3.12.18081601-MSVC_2\CMakeCCompiler.cmake;Z:\mmkv\Core\CMakeFiles\3.12.18081601-MSVC_2\CMakeCXXCompiler.cmake;Z:\mmkv\Core\CMakeFiles\3.12.18081601-MSVC_2\CMakeRCCompiler.cmake;Z:\mmkv\Core\CMakeFiles\3.12.18081601-MSVC_2\CMakeSystem.cmake;Z:\mmkv\Core\CMakeFiles\feature_tests.c;Z:\mmkv\Core\CMakeFiles\feature_tests.cxx;Z:\mmkv\Core\CMakeLists.txt;Z:\mmkv\Core\CMakeLists.txt;%(AdditionalInputs) + Z:\mmkv\Core\CMakeFiles\generate.stamp + false + Building Custom Rule Z:/mmkv/Core/CMakeLists.txt + setlocal +"C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe" -HZ:/mmkv/Core -BZ:/mmkv/Core --check-stamp-file Z:/mmkv/Core/CMakeFiles/generate.stamp +if %errorlevel% neq 0 goto :cmEnd +:cmEnd +endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone +:cmErrorLevel +exit /b %1 +:cmDone +if %errorlevel% neq 0 goto :VCEnd + Z:/mmkv/Core/CMakeLists.txt;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeCCompiler.cmake.in;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeCCompilerABI.c;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeCInformation.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeCXXCompiler.cmake.in;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeCXXCompilerABI.cpp;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeCXXInformation.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeCommonLanguageInclude.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeCompilerIdDetection.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeDetermineCCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeDetermineCXXCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeDetermineCompileFeatures.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeDetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeDetermineCompilerABI.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeDetermineCompilerId.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeDetermineRCCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeDetermineSystem.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeFindBinUtils.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeGenericSystem.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeInitializeConfigs.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeLanguageInformation.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeParseImplicitLinkInfo.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeRCCompiler.cmake.in;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeRCInformation.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeSystem.cmake.in;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeSystemSpecificInformation.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeSystemSpecificInitialize.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeTestCCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeTestCXXCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeTestCompilerCommon.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CMakeTestRCCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\ADSP-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\ARMCC-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\AppleClang-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\Borland-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\Bruce-C-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\CMakeCommonCompilerMacros.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\Clang-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\Clang-DetermineCompilerInternal.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\Comeau-CXX-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\Compaq-C-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\Compaq-CXX-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\Cray-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\Embarcadero-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\Fujitsu-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\GHS-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\GNU-C-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\GNU-CXX-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\HP-C-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\HP-CXX-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\IAR-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\IBMCPP-C-DetermineVersionInternal.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\IBMCPP-CXX-DetermineVersionInternal.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\Intel-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\MIPSpro-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\MSVC-C-FeatureTests.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\MSVC-C.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\MSVC-CXX-FeatureTests.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\MSVC-CXX.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\MSVC-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\NVIDIA-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\OpenWatcom-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\PGI-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\PathScale-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\SCO-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\SDCC-C-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\SunPro-C-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\SunPro-CXX-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\TI-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\TinyCC-C-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\VisualAge-C-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\VisualAge-CXX-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\Watcom-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\XL-C-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\XL-CXX-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\zOS-C-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Compiler\zOS-CXX-DetermineCompiler.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\CompilerId\VS-10.vcxproj.in;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Internal\FeatureTesting.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Platform\Windows-Determine-CXX.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Platform\Windows-MSVC-C.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Platform\Windows-MSVC-CXX.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Platform\Windows-MSVC.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Platform\Windows.cmake;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\share\cmake-3.12\Modules\Platform\WindowsPaths.cmake;Z:\mmkv\Core\CMakeFiles\3.12.18081601-MSVC_2\CMakeCCompiler.cmake;Z:\mmkv\Core\CMakeFiles\3.12.18081601-MSVC_2\CMakeCXXCompiler.cmake;Z:\mmkv\Core\CMakeFiles\3.12.18081601-MSVC_2\CMakeRCCompiler.cmake;Z:\mmkv\Core\CMakeFiles\3.12.18081601-MSVC_2\CMakeSystem.cmake;Z:\mmkv\Core\CMakeFiles\feature_tests.c;Z:\mmkv\Core\CMakeFiles\feature_tests.cxx;Z:\mmkv\Core\CMakeLists.txt;Z:\mmkv\Core\CMakeLists.txt;%(AdditionalInputs) + Z:\mmkv\Core\CMakeFiles\generate.stamp + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + CompileAsC + CompileAsC + CompileAsC + CompileAsC + + + CompileAsC + CompileAsC + CompileAsC + CompileAsC + + + + CompileAsC + CompileAsC + CompileAsC + CompileAsC + + + + + CompileAsC + CompileAsC + CompileAsC + CompileAsC + + + + CompileAsC + CompileAsC + CompileAsC + CompileAsC + + + + + + + + + + + + + {E156A539-FD01-3D35-B024-FDB6BB40B01A} + ZERO_CHECK + + + + + + \ No newline at end of file diff --git a/Core/core.vcxproj.filters b/Core/core.vcxproj.filters new file mode 100755 index 00000000..1281b0c8 --- /dev/null +++ b/Core/core.vcxproj.filters @@ -0,0 +1,153 @@ + + + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + + + + + + {A23FB4D7-B12B-3111-88E9-80ECCF93DBA8} + + + {047F57F7-8EBB-3570-BBF5-21BCA0934FD5} + + + \ No newline at end of file diff --git a/Win32/Win32.sln b/Win32/Win32.sln index 2b4f8168..c479e029 100644 --- a/Win32/Win32.sln +++ b/Win32/Win32.sln @@ -1,58 +1,82 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 15 -VisualStudioVersion = 15.0.28307.136 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Win32Demo", "Win32Demo\Win32Demo.vcxproj", "{532303C4-38D9-45D3-B925-18056C66CD01}" - ProjectSection(ProjectDependencies) = postProject - {86D6C605-81F3-407B-A766-690EDF4CD346} = {86D6C605-81F3-407B-A766-690EDF4CD346} - {9D4250EF-E8D6-4652-B738-3D4B2E982126} = {9D4250EF-E8D6-4652-B738-3D4B2E982126} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "MMKV", "MMKV\MMKV.vcxproj", "{9D4250EF-E8D6-4652-B738-3D4B2E982126}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Win32DemoProcess", "Win32DemoProcess\Win32DemoProcess.vcxproj", "{86D6C605-81F3-407B-A766-690EDF4CD346}" - ProjectSection(ProjectDependencies) = postProject - {9D4250EF-E8D6-4652-B738-3D4B2E982126} = {9D4250EF-E8D6-4652-B738-3D4B2E982126} - EndProjectSection -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|x64 = Debug|x64 - Debug|x86 = Debug|x86 - Release|x64 = Release|x64 - Release|x86 = Release|x86 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {532303C4-38D9-45D3-B925-18056C66CD01}.Debug|x64.ActiveCfg = Debug|x64 - {532303C4-38D9-45D3-B925-18056C66CD01}.Debug|x64.Build.0 = Debug|x64 - {532303C4-38D9-45D3-B925-18056C66CD01}.Debug|x86.ActiveCfg = Debug|Win32 - {532303C4-38D9-45D3-B925-18056C66CD01}.Debug|x86.Build.0 = Debug|Win32 - {532303C4-38D9-45D3-B925-18056C66CD01}.Release|x64.ActiveCfg = Release|x64 - {532303C4-38D9-45D3-B925-18056C66CD01}.Release|x64.Build.0 = Release|x64 - {532303C4-38D9-45D3-B925-18056C66CD01}.Release|x86.ActiveCfg = Release|Win32 - {532303C4-38D9-45D3-B925-18056C66CD01}.Release|x86.Build.0 = Release|Win32 - {9D4250EF-E8D6-4652-B738-3D4B2E982126}.Debug|x64.ActiveCfg = Debug|x64 - {9D4250EF-E8D6-4652-B738-3D4B2E982126}.Debug|x64.Build.0 = Debug|x64 - {9D4250EF-E8D6-4652-B738-3D4B2E982126}.Debug|x86.ActiveCfg = Debug|Win32 - {9D4250EF-E8D6-4652-B738-3D4B2E982126}.Debug|x86.Build.0 = Debug|Win32 - {9D4250EF-E8D6-4652-B738-3D4B2E982126}.Release|x64.ActiveCfg = Release|x64 - {9D4250EF-E8D6-4652-B738-3D4B2E982126}.Release|x64.Build.0 = Release|x64 - {9D4250EF-E8D6-4652-B738-3D4B2E982126}.Release|x86.ActiveCfg = Release|Win32 - {9D4250EF-E8D6-4652-B738-3D4B2E982126}.Release|x86.Build.0 = Release|Win32 - {86D6C605-81F3-407B-A766-690EDF4CD346}.Debug|x64.ActiveCfg = Debug|x64 - {86D6C605-81F3-407B-A766-690EDF4CD346}.Debug|x64.Build.0 = Debug|x64 - {86D6C605-81F3-407B-A766-690EDF4CD346}.Debug|x86.ActiveCfg = Debug|Win32 - {86D6C605-81F3-407B-A766-690EDF4CD346}.Debug|x86.Build.0 = Debug|Win32 - {86D6C605-81F3-407B-A766-690EDF4CD346}.Release|x64.ActiveCfg = Release|x64 - {86D6C605-81F3-407B-A766-690EDF4CD346}.Release|x64.Build.0 = Release|x64 - {86D6C605-81F3-407B-A766-690EDF4CD346}.Release|x86.ActiveCfg = Release|Win32 - {86D6C605-81F3-407B-A766-690EDF4CD346}.Release|x86.Build.0 = Release|Win32 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {EAE99F5F-91EC-4631-A8DA-E8223A366552} - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 15 +VisualStudioVersion = 15.0.28307.136 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Win32Demo", "Win32Demo\Win32Demo.vcxproj", "{532303C4-38D9-45D3-B925-18056C66CD01}" + ProjectSection(ProjectDependencies) = postProject + {86D6C605-81F3-407B-A766-690EDF4CD346} = {86D6C605-81F3-407B-A766-690EDF4CD346} + {32CD39C9-37B5-3D38-A3D9-45E13F4AF9C5} = {32CD39C9-37B5-3D38-A3D9-45E13F4AF9C5} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Win32DemoProcess", "Win32DemoProcess\Win32DemoProcess.vcxproj", "{86D6C605-81F3-407B-A766-690EDF4CD346}" + ProjectSection(ProjectDependencies) = postProject + {32CD39C9-37B5-3D38-A3D9-45E13F4AF9C5} = {32CD39C9-37B5-3D38-A3D9-45E13F4AF9C5} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core", "..\Core\core.vcxproj", "{32CD39C9-37B5-3D38-A3D9-45E13F4AF9C5}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + MinSizeRel|x64 = MinSizeRel|x64 + MinSizeRel|x86 = MinSizeRel|x86 + Release|x64 = Release|x64 + Release|x86 = Release|x86 + RelWithDebInfo|x64 = RelWithDebInfo|x64 + RelWithDebInfo|x86 = RelWithDebInfo|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {532303C4-38D9-45D3-B925-18056C66CD01}.Debug|x64.ActiveCfg = Debug|x64 + {532303C4-38D9-45D3-B925-18056C66CD01}.Debug|x64.Build.0 = Debug|x64 + {532303C4-38D9-45D3-B925-18056C66CD01}.Debug|x86.ActiveCfg = Debug|Win32 + {532303C4-38D9-45D3-B925-18056C66CD01}.Debug|x86.Build.0 = Debug|Win32 + {532303C4-38D9-45D3-B925-18056C66CD01}.MinSizeRel|x64.ActiveCfg = Release|x64 + {532303C4-38D9-45D3-B925-18056C66CD01}.MinSizeRel|x64.Build.0 = Release|x64 + {532303C4-38D9-45D3-B925-18056C66CD01}.MinSizeRel|x86.ActiveCfg = Release|Win32 + {532303C4-38D9-45D3-B925-18056C66CD01}.MinSizeRel|x86.Build.0 = Release|Win32 + {532303C4-38D9-45D3-B925-18056C66CD01}.Release|x64.ActiveCfg = Release|x64 + {532303C4-38D9-45D3-B925-18056C66CD01}.Release|x64.Build.0 = Release|x64 + {532303C4-38D9-45D3-B925-18056C66CD01}.Release|x86.ActiveCfg = Release|Win32 + {532303C4-38D9-45D3-B925-18056C66CD01}.Release|x86.Build.0 = Release|Win32 + {532303C4-38D9-45D3-B925-18056C66CD01}.RelWithDebInfo|x64.ActiveCfg = Release|x64 + {532303C4-38D9-45D3-B925-18056C66CD01}.RelWithDebInfo|x64.Build.0 = Release|x64 + {532303C4-38D9-45D3-B925-18056C66CD01}.RelWithDebInfo|x86.ActiveCfg = Release|Win32 + {532303C4-38D9-45D3-B925-18056C66CD01}.RelWithDebInfo|x86.Build.0 = Release|Win32 + {86D6C605-81F3-407B-A766-690EDF4CD346}.Debug|x64.ActiveCfg = Debug|x64 + {86D6C605-81F3-407B-A766-690EDF4CD346}.Debug|x64.Build.0 = Debug|x64 + {86D6C605-81F3-407B-A766-690EDF4CD346}.Debug|x86.ActiveCfg = Debug|Win32 + {86D6C605-81F3-407B-A766-690EDF4CD346}.Debug|x86.Build.0 = Debug|Win32 + {86D6C605-81F3-407B-A766-690EDF4CD346}.MinSizeRel|x64.ActiveCfg = Release|x64 + {86D6C605-81F3-407B-A766-690EDF4CD346}.MinSizeRel|x64.Build.0 = Release|x64 + {86D6C605-81F3-407B-A766-690EDF4CD346}.MinSizeRel|x86.ActiveCfg = Release|Win32 + {86D6C605-81F3-407B-A766-690EDF4CD346}.MinSizeRel|x86.Build.0 = Release|Win32 + {86D6C605-81F3-407B-A766-690EDF4CD346}.Release|x64.ActiveCfg = Release|x64 + {86D6C605-81F3-407B-A766-690EDF4CD346}.Release|x64.Build.0 = Release|x64 + {86D6C605-81F3-407B-A766-690EDF4CD346}.Release|x86.ActiveCfg = Release|Win32 + {86D6C605-81F3-407B-A766-690EDF4CD346}.Release|x86.Build.0 = Release|Win32 + {86D6C605-81F3-407B-A766-690EDF4CD346}.RelWithDebInfo|x64.ActiveCfg = Release|x64 + {86D6C605-81F3-407B-A766-690EDF4CD346}.RelWithDebInfo|x64.Build.0 = Release|x64 + {86D6C605-81F3-407B-A766-690EDF4CD346}.RelWithDebInfo|x86.ActiveCfg = Release|Win32 + {86D6C605-81F3-407B-A766-690EDF4CD346}.RelWithDebInfo|x86.Build.0 = Release|Win32 + {32CD39C9-37B5-3D38-A3D9-45E13F4AF9C5}.Debug|x64.ActiveCfg = Debug|Win32 + {32CD39C9-37B5-3D38-A3D9-45E13F4AF9C5}.Debug|x86.ActiveCfg = Debug|Win32 + {32CD39C9-37B5-3D38-A3D9-45E13F4AF9C5}.Debug|x86.Build.0 = Debug|Win32 + {32CD39C9-37B5-3D38-A3D9-45E13F4AF9C5}.MinSizeRel|x64.ActiveCfg = MinSizeRel|Win32 + {32CD39C9-37B5-3D38-A3D9-45E13F4AF9C5}.MinSizeRel|x86.ActiveCfg = MinSizeRel|Win32 + {32CD39C9-37B5-3D38-A3D9-45E13F4AF9C5}.MinSizeRel|x86.Build.0 = MinSizeRel|Win32 + {32CD39C9-37B5-3D38-A3D9-45E13F4AF9C5}.Release|x64.ActiveCfg = Release|Win32 + {32CD39C9-37B5-3D38-A3D9-45E13F4AF9C5}.Release|x86.ActiveCfg = Release|Win32 + {32CD39C9-37B5-3D38-A3D9-45E13F4AF9C5}.Release|x86.Build.0 = Release|Win32 + {32CD39C9-37B5-3D38-A3D9-45E13F4AF9C5}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|Win32 + {32CD39C9-37B5-3D38-A3D9-45E13F4AF9C5}.RelWithDebInfo|x86.ActiveCfg = RelWithDebInfo|Win32 + {32CD39C9-37B5-3D38-A3D9-45E13F4AF9C5}.RelWithDebInfo|x86.Build.0 = RelWithDebInfo|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {EAE99F5F-91EC-4631-A8DA-E8223A366552} + EndGlobalSection +EndGlobal diff --git a/Win32/Win32Demo/Win32Demo.cpp b/Win32/Win32Demo/Win32Demo.cpp old mode 100644 new mode 100755 index 40a61ecd..61f89776 --- a/Win32/Win32Demo/Win32Demo.cpp +++ b/Win32/Win32Demo/Win32Demo.cpp @@ -241,7 +241,7 @@ int main() { wstring rootDir = getAppDataRoaming(L"Tencent", L"΢ÐÅ-MMKV"); MMKV::initializeMMKV(rootDir); //MMKV::setLogLevel(MMKVLogNone); - MMKV::regiserLogHandler(LogHandler); + MMKV::registerLogHandler(LogHandler); //auto mmkv = MMKV::defaultMMKV(); auto mmkv = MMKV::mmkvWithID("testEncrypt", MMKV_SINGLE_PROCESS, &string("cryptKey"));