write project files into the build dir.

This commit is contained in:
Campbell Barton 2011-03-24 10:54:42 +00:00
parent 3ebb9676c1
commit 19819dcbc7
1 changed files with 46 additions and 33 deletions

View File

@ -26,11 +26,12 @@
"""
Example Win32 usage:
c:\Python32\python.exe c:\blender_dev\blender\build_files\cmake\cmake_qtcreator_project.py c:\blender_dev\cmake_build
example linux usage
python .~/blenderSVN/blender/build_files/cmake/cmake_qtcreator_project.py ~/blenderSVN/cmake
"""
import sys
import os
from os.path import join, dirname, normpath, abspath, splitext, relpath, exists
@ -40,6 +41,20 @@ base = abspath(base)
SIMPLE_PROJECTFILE = False
# get cmake path
CMAKE_DIR = sys.argv[-1]
if not os.path.exists(os.path.join(CMAKE_DIR, "CMakeCache.txt")):
CMAKE_DIR = os.getcwd()
if not os.path.exists(os.path.join(CMAKE_DIR, "CMakeCache.txt")):
print("CMakeCache.txt not found in %r or %r\n Pass CMake build dir as an argument, or run from that dir, aborting" % (CMAKE_DIR, os.getcwd()))
sys.exit(1)
# could be either.
# PROJECT_DIR = base
PROJECT_DIR = CMAKE_DIR
def source_list(path, filename_check=None):
for dirpath, dirnames, filenames in os.walk(path):
@ -69,10 +84,12 @@ def is_py(filename):
ext = splitext(filename)[1]
return (ext == ".py")
def is_glsl(filename):
ext = splitext(filename)[1]
return (ext == ".glsl")
def is_c(filename):
ext = splitext(filename)[1]
return (ext in (".c", ".cpp", ".cxx", ".m", ".mm", ".rc"))
@ -96,12 +113,12 @@ def cmake_advanced_info():
""" Extracr includes and defines from cmake.
"""
def create_eclipse_project(cmake_dir):
def create_eclipse_project(CMAKE_DIR):
import sys
if sys.platform == "win32":
cmd = 'cmake %r -G"Eclipse CDT4 - MinGW Makefiles"' % cmake_dir
cmd = 'cmake %r -G"Eclipse CDT4 - MinGW Makefiles"' % CMAKE_DIR
else:
cmd = 'cmake %r -G"Eclipse CDT4 - Unix Makefiles"' % cmake_dir
cmd = 'cmake %r -G"Eclipse CDT4 - Unix Makefiles"' % CMAKE_DIR
os.system(cmd)
@ -111,18 +128,10 @@ def cmake_advanced_info():
import os
import sys
cmake_dir = sys.argv[-1]
if not os.path.exists(os.path.join(cmake_dir, "CMakeCache.txt")):
cmake_dir = os.getcwd()
if not os.path.exists(os.path.join(cmake_dir, "CMakeCache.txt")):
print("CMakeCache.txt not found in %r or %r\n Pass CMake build dir as an argument, or run from that dir, aborting" % (cmake_dir, os.getcwd()))
sys.exit(1)
create_eclipse_project(cmake_dir)
create_eclipse_project(CMAKE_DIR)
from xml.dom.minidom import parse
tree = parse(os.path.join(cmake_dir, ".cproject"))
tree = parse(os.path.join(CMAKE_DIR, ".cproject"))
'''
f = open(".cproject_pretty", 'w')
f.write(tree.toprettyxml(indent=" ", newl=""))
@ -165,26 +174,27 @@ def cmake_advanced_info():
return includes, defines
def create_qtc_project_main():
files = list(source_list(base, filename_check=is_project_file))
files_rel = [relpath(f, start=base) for f in files]
files_rel = [relpath(f, start=PROJECT_DIR) for f in files]
files_rel.sort()
# --- qtcreator specific, simple format
if SIMPLE_PROJECTFILE:
# --- qtcreator specific, simple format
PROJECT_NAME = "Blender"
f = open(join(base, "%s.files" % PROJECT_NAME), 'w')
f = open(join(PROJECT_DIR, "%s.files" % PROJECT_NAME), 'w')
f.write("\n".join(files_rel))
f = open(join(base, "%s.includes" % PROJECT_NAME), 'w')
f = open(join(PROJECT_DIR, "%s.includes" % PROJECT_NAME), 'w')
f.write("\n".join(sorted(list(set(dirname(f) for f in files_rel if is_c_header(f))))))
qtc_prj = join(base, "%s.creator" % PROJECT_NAME)
qtc_prj = join(PROJECT_DIR, "%s.creator" % PROJECT_NAME)
f = open(qtc_prj, 'w')
f.write("[General]\n")
qtc_cfg = join(base, "%s.config" % PROJECT_NAME)
qtc_cfg = join(PROJECT_DIR, "%s.config" % PROJECT_NAME)
if not exists(qtc_cfg):
f = open(qtc_cfg, 'w')
f.write("// ADD PREDEFINED MACROS HERE!\n")
@ -196,44 +206,47 @@ def create_qtc_project_main():
includes.sort()
PROJECT_NAME = "Blender"
f = open(join(base, "%s.files" % PROJECT_NAME), 'w')
FILE_NAME = PROJECT_NAME.lower()
f = open(join(PROJECT_DIR, "%s.files" % FILE_NAME), 'w')
f.write("\n".join(files_rel))
f = open(join(base, "%s.includes" % PROJECT_NAME), 'w')
f = open(join(PROJECT_DIR, "%s.includes" % FILE_NAME), 'w')
f.write("\n".join(sorted(includes)))
qtc_prj = join(base, "%s.creator" % PROJECT_NAME)
qtc_prj = join(PROJECT_DIR, "%s.creator" % FILE_NAME)
f = open(qtc_prj, 'w')
f.write("[General]\n")
qtc_cfg = join(base, "%s.config" % PROJECT_NAME)
qtc_cfg = join(PROJECT_DIR, "%s.config" % FILE_NAME)
f = open(qtc_cfg, 'w')
f.write("// ADD PREDEFINED MACROS HERE!\n")
f.write("\n".join([("#define %s %s" % item) for item in defines]))
print("Main Blender project file written to: %s" % qtc_prj)
print("Blender project file written to: %s" % qtc_prj)
# --- end
def create_qtc_project_python():
files = list(source_list(base, filename_check=is_py))
files_rel = [relpath(f, start=base) for f in files]
files_rel = [relpath(f, start=PROJECT_DIR) for f in files]
files_rel.sort()
# --- qtcreator specific, simple format
PROJECT_NAME = "Blender_Python"
f = open(join(base, "%s.files" % PROJECT_NAME), 'w')
FILE_NAME = PROJECT_NAME.lower()
f = open(join(PROJECT_DIR, "%s.files" % FILE_NAME), 'w')
f.write("\n".join(files_rel))
qtc_prj = join(base, "%s.creator" % PROJECT_NAME)
qtc_prj = join(PROJECT_DIR, "%s.creator" % FILE_NAME)
f = open(qtc_prj, 'w')
f.write("[General]\n")
qtc_cfg = join(base, "%s.config" % PROJECT_NAME)
qtc_cfg = join(PROJECT_DIR, "%s.config" % FILE_NAME)
if not exists(qtc_cfg):
f = open(qtc_cfg, 'w')
f.write("// ADD PREDEFINED MACROS HERE!\n")
print("Blender python project file written to: %s" % qtc_prj)
print("Python project file written to: %s" % qtc_prj)
def main():