<COCOS2D-X>

4. 심볼릭링크 자동 지정

CodeGrimie 2021. 2. 7. 12:22

일전에 심볼릭 링크를 사용해서 Cocos2D-X 프로젝트의 용량을 줄이는 방법에 대해서 정리한 적 있다.

제대로 작동하지만 프로젝트를 만들 때마다 해당 명령어를 입력하는 것이 매우 귀찮다.

(프로그래머가 되어가면서 이런 것들이 점점 귀찮아진다.)

 

그래서 애초에 Cocos2D-x 프로젝트를 만들 때 심볼릭 링크로 만들도록 Python 파일을 수정했다.

 

Python 파일의 위치는 아래와 같다.

cocos2d-x-4.0\tools\cocos2d-console\plugins\plugin_new\project_new.py

 

▼ project_new.py 에서 아래의 코드로 수정한다.

def append_x_engine(self, v):
        # FIXME this is a hack, but in order to fix it correctly the cocos-project-template.json
        # file probably will need to be re-designed.
        # As a quick (horrible) fix, we check if we are in distro mode.
        # If so, we don't do the "append_x_engine" step
        if cocos.CCPlugin.get_cocos2d_mode() == 'distro':
            return

        # src = os.path.join(self.cocos_root, v['from'])
        # dst = os.path.join(self.project_dir, v['to'])

        # # check cocos engine exist
        # cocosx_files_json = os.path.join(
        #     src, 'templates', 'cocos2dx_files.json')
        # if not os.path.exists(cocosx_files_json):
        #     message = MultiLanguage.get_string('NEW_WARNING_FILE_NOT_FOUND_FMT', cocosx_files_json)
        #     raise cocos.CCPluginError(message, cocos.CCPluginError.ERROR_PATH_NOT_FOUND)

        # f = open(cocosx_files_json)
        # data = json.load(f)
        # f.close()

        # fileList = data['common']
        # if self.lang == 'lua':
        #     fileList = fileList + data['lua']

        # if self.lang == 'js' and 'js' in data.keys():
        #     fileList = fileList + data['js']

        # # begin copy engine
        # cocos.Logging.info(MultiLanguage.get_string('NEW_INFO_STEP_COPY_X'))

        # for index in range(len(fileList)):
        #     srcfile = os.path.join(src, fileList[index])
        #     dstfile = os.path.join(dst, fileList[index])

        #     srcfile = cocos.add_path_prefix(srcfile)
        #     dstfile = cocos.add_path_prefix(dstfile)

        #     if not os.path.exists(os.path.dirname(dstfile)):
        #         os.makedirs(cocos.add_path_prefix(os.path.dirname(dstfile)))

        #     # copy file or folder
        #     if os.path.exists(srcfile):
        #         if os.path.isdir(srcfile):
        #             if os.path.exists(dstfile):
        #                 shutil.rmtree(dstfile)
        #             shutil.copytree(srcfile, dstfile)
        #         else:
        #             if os.path.exists(dstfile):
        #                 os.remove(dstfile)
        #             shutil.copy2(srcfile, dstfile)

        # Add Symbolic Links
        cocos.Logging.info("Now Create Cocos2d-x Engine symbolic links...")

        if cocos.os_is_win32():
            os.system('mklink /J "{0}"\cocos2d "{1}"'.format(self.project_dir, self.cocos_root))
        elif cocos.os_is_mac():
            os.system('ln -s "{0}" "{1}"\cocos2d'.format(self.cocos_root, self.project_dir))

이렇게 하면 cocos 명령어로 새 프로젝트를 만들 때 심볼릭링크로 cocos2d 엔진 파일을 가져온다.

코드를 빌드하고 나면 용량이 다시 400MB까지 올라가는데 이건 비주얼스튜디오가 생성하는 파일 크기이므로 마땅히 줄일 방법이 별로 없어보인다..