public void CppTemplate() { var project = new WrapperProject(); project.NamespaceName = "CppTemplate"; project.ProjectFilePath = "CppTemplate/cpp_template.xml"; project.SourceRootFolders.Add("."); project.ReadCpp(); project.Save(); var parser = new DotNetParser(project); parser.Parse(); project.CProjectPath = "CppTemplate_wrap"; project.CsProjectPath = "CppTemplate_wrap"; var writer = new PInvokeWriter(parser); writer.Output(); var cmake = new CMakeWriter(parser); cmake.Output(); Assert.AreEqual(1, project.HeaderDefinitions.Count); Assert.AreEqual(4, project.ClassDefinitions.Count); /* * var cppClass1 = project.ClassDefinitions.First().Value; * Assert.AreEqual("CppClass1", cppClass1.Name); * Assert.AreEqual("CppClass1", cppClass1.ManagedName); * Assert.AreEqual(2, cppClass1.Methods.Count); * Assert.AreEqual("Empty", cppClass1.Methods[1].ManagedName);*/ }
/// <summary> /// Writes the CMake file /// </summary> public static void CMakeWriter() { string TypePrefix = (isInternal ? Gpa.internalStr : Gpa.publicStr); foreach (var api in counterDefs) { bool Init = false; TextWriter CMakeWriter = null; string headerFiles = "set(" + TypePrefix.ToUpper() + "_COUNTER_DEF_HEADERS_" + api.Key.ToUpper(); string sourceFiles = "set(" + TypePrefix.ToUpper() + "_COUNTER_DEF_SRC_" + api.Key.ToUpper(); bool foundHeader = false; foreach (var fileName in api.Value) { if (!Init) { Init = true; string CMakeFileName = Gpa.GetDirectoryFromFilePath(fileName) + "\\" + TypePrefix.ToLower() + "_" + Gpa.counterDefinitionsStr + api.Key + ".cmake"; CMakeWriter = new StreamWriter(CMakeFileName); CMakeWriter.WriteLine("## Copyright (c) {0} Advanced Micro Devices, Inc. All rights reserved.", DateTime.Today.Year); CMakeWriter.WriteLine("cmake_minimum_required(VERSION 3.5.1)"); CMakeWriter.WriteLine(); CMakeWriter.WriteLine("set(CMAKE_INCLUDE_CURRENT_DIR ON)"); } if (Gpa.IsHeaderFile(fileName)) { headerFiles = headerFiles + Environment.NewLine + "${CMAKE_CURRENT_LIST_DIR}/" + Gpa.GetFileNameFromFilePath(fileName); foundHeader = true; } else { sourceFiles = sourceFiles + Environment.NewLine + "${CMAKE_CURRENT_LIST_DIR}/" + Gpa.GetFileNameFromFilePath(fileName); } } if (null != CMakeWriter) { if (foundHeader) { headerFiles = headerFiles + ")" + Environment.NewLine; } sourceFiles = sourceFiles + ")" + Environment.NewLine; if (foundHeader) { CMakeWriter.WriteLine(headerFiles); } CMakeWriter.WriteLine(sourceFiles); CMakeWriter.Close(); } } // DerivedCounterDefs foreach (var api in derivedCounters) { bool Init = false; TextWriter CMakeWriter = null; string headerFiles = "set(" + TypePrefix.ToUpper() + "_DERIVED_COUNTERS_API_HEADERS_" + api.Key.ToUpper(); string sourceFiles = "set(" + TypePrefix.ToUpper() + "_DERIVED_COUNTERS_API_SRC_" + api.Key.ToUpper(); bool foundHeader = false; foreach (var fileName in api.Value) { if (!Init) { Init = true; string CMakeFileName = Gpa.GetDirectoryFromFilePath(fileName) + "\\" + TypePrefix.ToLower() + "_" + Gpa.derivedCounterOutFileName + api.Key + ".cmake"; CMakeWriter = new StreamWriter(CMakeFileName); CMakeWriter.WriteLine("## Copyright (c) {0} Advanced Micro Devices, Inc. All rights reserved.", DateTime.Today.Year); CMakeWriter.WriteLine("cmake_minimum_required(VERSION 3.5.1)"); CMakeWriter.WriteLine(); CMakeWriter.WriteLine("set(CMAKE_INCLUDE_CURRENT_DIR ON)"); } if (Gpa.IsHeaderFile(fileName)) { headerFiles = headerFiles + Environment.NewLine + "${CMAKE_CURRENT_LIST_DIR}/" + Gpa.GetFileNameFromFilePath(fileName); foundHeader = true; } else { sourceFiles = sourceFiles + Environment.NewLine + "${CMAKE_CURRENT_LIST_DIR}/" + Gpa.GetFileNameFromFilePath(fileName); } } if (null != CMakeWriter) { if (foundHeader) { headerFiles = headerFiles + ")" + Environment.NewLine; } sourceFiles = sourceFiles + ")" + Environment.NewLine; if (foundHeader) { CMakeWriter.WriteLine(headerFiles); } CMakeWriter.WriteLine(sourceFiles); CMakeWriter.Close(); } } }