Created
May 11, 2017 12:58
-
-
Save cmpute/e9e9f2a676fd34a42b1127beab7512be to your computer and use it in GitHub Desktop.
Generate VC++ Properties file (.prop) for PCL projects
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import os | |
import os.path as op | |
# Paths can be user-defined | |
pcl_dir = os.environ["PCL_ROOT"] | |
pcl_ver = pcl_dir.split(' ')[-1] | |
vctool_ver = list(filter(lambda part: part.startswith('vc'), | |
os.listdir(op.join(pcl_dir, '3rdParty', 'Boost', 'lib'))[0].split('-')))[0] #vc140 | |
openni_dir = op.sep.join(os.environ['OPENNI2_LIB64'].split(op.sep)[:-2]) | |
template = ''' | |
<?xml version="1.0" encoding="utf-8"?> | |
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | |
<ImportGroup Label="PropertySheets"/> | |
<!-- User Macros --> | |
<PropertyGroup Label="UserMacros"> | |
<PCL_ROOT Condition="'$(Platform)'=='Win32'">{pcl_dir}</PCL_ROOT> | |
<PCL_ROOT Condition="'$(Platform)'=='x64'">{pcl_dir}</PCL_ROOT> | |
</PropertyGroup> | |
<!-- Debug|Win32 --> | |
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> | |
</PropertyGroup> | |
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> | |
<ClCompile> | |
<AdditionalIncludeDirectories>$(PCL_ROOT)\\include\\{pcl_ver_dir};$(PCL_ROOT)\\3rdParty\\Boost\\include\\{boost_ver_dir};$(PCL_ROOT)\\3rdParty\\Eigen\\eigen3;$(PCL_ROOT)\\3rdParty\\FLANN\\include;$(PCL_ROOT)\\3rdParty\\QHull\\include;$(PCL_ROOT)\\3rdParty\\VTK\\include\\vtk-7.0;{openni_dir_include};%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> | |
<SDLCheck>false</SDLCheck> | |
<PreprocessorDefinitions>_WIN32_WINNT=0x0A00;_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions> | |
</ClCompile> | |
<Link> | |
<AdditionalLibraryDirectories>$(PCL_ROOT)\\lib;$(PCL_ROOT)\\3rdParty\\Boost\\lib;$(PCL_ROOT)\\3rdParty\\FLANN\\lib;$(PCL_ROOT)\\3rdParty\\QHull\\lib;$(PCL_ROOT)\\3rdParty\\VTK\\lib;{openni_dir_lib};%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> | |
<AdditionalDependencies Condition="'$(PlatformToolset)'=='{vctool_ver}'">{debug_libs}%(AdditionalDependencies)</AdditionalDependencies> | |
</Link> | |
</ItemDefinitionGroup> | |
<!-- Release|Win32 --> | |
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> | |
</PropertyGroup> | |
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> | |
<ClCompile> | |
<AdditionalIncludeDirectories>$(PCL_ROOT)\\include\\{pcl_ver_dir};$(PCL_ROOT)\\3rdParty\\Boost\\include\\{boost_ver_dir};$(PCL_ROOT)\\3rdParty\\Eigen\\eigen3;$(PCL_ROOT)\\3rdParty\\FLANN\\include;$(PCL_ROOT)\\3rdParty\\QHull\\include;$(PCL_ROOT)\\3rdParty\\VTK\\include\\vtk-7.0;{openni_dir_include};%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> | |
<SDLCheck>false</SDLCheck> | |
<PreprocessorDefinitions>_WIN32_WINNT=0x0A00;%(PreprocessorDefinitions)</PreprocessorDefinitions> | |
</ClCompile> | |
<Link> | |
<AdditionalLibraryDirectories>$(PCL_ROOT)\\lib;$(PCL_ROOT)\\3rdParty\\Boost\\lib;$(PCL_ROOT)\\3rdParty\\FLANN\\lib;$(PCL_ROOT)\\3rdParty\\QHull\\lib;$(PCL_ROOT)\\3rdParty\\VTK\\lib;{openni_dir_lib};%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> | |
<AdditionalDependencies Condition="'$(PlatformToolset)'=='{vctool_ver}'">{release_libs}%(AdditionalDependencies)</AdditionalDependencies> | |
</Link> | |
</ItemDefinitionGroup> | |
<!-- Debug|x64 --> | |
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> | |
</PropertyGroup> | |
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> | |
<ClCompile> | |
<AdditionalIncludeDirectories>$(PCL_ROOT)\\include\\{pcl_ver_dir};$(PCL_ROOT)\\3rdParty\\Boost\\include\\{boost_ver_dir};$(PCL_ROOT)\\3rdParty\\Eigen\\eigen3;$(PCL_ROOT)\\3rdParty\\FLANN\\include;$(PCL_ROOT)\\3rdParty\\QHull\\include;$(PCL_ROOT)\\3rdParty\\VTK\\include\\vtk-7.0;{openni_dir_include};%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> | |
<SDLCheck>false</SDLCheck> | |
<PreprocessorDefinitions>_WIN32_WINNT=0x0A00;_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions> | |
</ClCompile> | |
<Link> | |
<AdditionalLibraryDirectories>$(PCL_ROOT)\\lib;$(PCL_ROOT)\\3rdParty\\Boost\\lib;$(PCL_ROOT)\\3rdParty\\FLANN\\lib;$(PCL_ROOT)\\3rdParty\\QHull\\lib;$(PCL_ROOT)\\3rdParty\\VTK\\lib;{openni_dir_lib};%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> | |
<AdditionalDependencies Condition="'$(PlatformToolset)'=='{vctool_ver}'">{debug_libs}%(AdditionalDependencies)</AdditionalDependencies> | |
</Link> | |
</ItemDefinitionGroup> | |
<!-- Release|x64 --> | |
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> | |
</PropertyGroup> | |
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> | |
<ClCompile> | |
<AdditionalIncludeDirectories>$(PCL_ROOT)\\include\\{pcl_ver_dir};$(PCL_ROOT)\\3rdParty\\Boost\\include\\{boost_ver_dir};$(PCL_ROOT)\\3rdParty\\Eigen\\eigen3;$(PCL_ROOT)\\3rdParty\\FLANN\\include;$(PCL_ROOT)\\3rdParty\\QHull\\include;$(PCL_ROOT)\\3rdParty\\VTK\\include\\vtk-7.0;{openni_dir_include};%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> | |
<SDLCheck>false</SDLCheck> | |
<PreprocessorDefinitions>_WIN32_WINNT=0x0A00;%(PreprocessorDefinitions)</PreprocessorDefinitions> | |
</ClCompile> | |
<Link> | |
<AdditionalLibraryDirectories>$(PCL_ROOT)\\lib;$(PCL_ROOT)\\3rdParty\\Boost\\lib;$(PCL_ROOT)\\3rdParty\\FLANN\\lib;$(PCL_ROOT)\\3rdParty\\QHull\\lib;$(PCL_ROOT)\\3rdParty\\VTK\\lib;{openni_dir_lib};%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> | |
<AdditionalDependencies Condition="'$(PlatformToolset)'=='{vctool_ver}'">{release_libs}%(AdditionalDependencies)</AdditionalDependencies> | |
</Link> | |
</ItemDefinitionGroup> | |
</Project> | |
''' | |
common = ['opengl32.lib', 'OpenNI2.lib'] | |
debug_libs = list(common) | |
release_libs = list(common) | |
def find_libs(path, has_gd=False): | |
for name in os.listdir(path): | |
if op.isfile(op.join(path, name)) and name.endswith('.lib'): | |
if name.endswith('_debug.lib') or name.find('-gd') > 0 or name.find('_d') > 0: | |
debug_libs.append(name) | |
elif name.endswith('_release.lib') or has_gd: | |
release_libs.append(name) | |
else: | |
debug_libs.append(name) | |
release_libs.append(name) | |
find_libs(op.join(pcl_dir, 'lib')) | |
find_libs(op.join(pcl_dir, '3rdParty', 'Boost', 'lib'), True) | |
find_libs(op.join(pcl_dir, '3rdParty', 'FLANN', 'lib'), True) | |
find_libs(op.join(pcl_dir, '3rdParty', 'Qhull', 'lib'), True) | |
find_libs(op.join(pcl_dir, '3rdParty', 'VTK', 'lib'), True) | |
with open('pcl.props','w') as f: | |
f.write(template.format( | |
pcl_dir=pcl_dir, | |
pcl_ver_dir='pcl-' + pcl_dir.split(' ')[-1][:-2], | |
boost_ver_dir=os.listdir(op.join(pcl_dir, '3rdParty', 'Boost', 'include'))[0], | |
debug_libs=';'.join(debug_libs), | |
release_libs=';'.join(release_libs), | |
vctool_ver=vctool_ver, | |
openni_dir_include=op.join(openni_dir, 'Include'), | |
openni_dir_lib=op.join(openni_dir, 'Lib') | |
)) | |
print("finished") |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment