craflin / mare Goto Github PK
View Code? Open in Web Editor NEWMare is a versatile build automation and build file generator tool for C/C++ applications.
License: Apache License 2.0
Mare is a versatile build automation and build file generator tool for C/C++ applications.
License: Apache License 2.0
Since Visual Studio writes all output files in the same directory, it cannot handle projects in which several source files have the same name, but are located in different paths. However, mare could generate projects that handle these situations. It seems that it is not possible the generate output files with individual paths, because VS does not create the directories before it tries to write the files.
However, what works is to give the output files different names. I do not have a pull request, because I am not sure how to integrate this elegantly, but something that works in Vcxproj.cpp:1238ff is:
fileWrite(String(" <") + file.type + " Include=\"" + path + "\">\r\n");
MD5 md5;
md5.update((const unsigned char*)path.getData(), path.getLength());
unsigned char sum[16];
md5.final(sum);
char digits[9];
#ifdef WIN32
sprintf_s
#else
snprintf
#endif
(digits, sizeof(digits), "%8x", *(unsigned*)sum);
fileWrite(String(" <ObjectFileName>$(IntDir)%(Filename)-") + digits + ".obj</ObjectFileName>\r\n");
This adds a 8 digits hex code to each object file that is based on the file's relative path. It requires some minor changes in the code that is following, because a closing tag is now always needed. An even better solution would be to only do this if there are actual duplicates. That's how Xcode does it.
Currently when creating a target that just executes a command (eg. 'echo hello'), you still have to specify the 'input' and 'output' variables for it to work, even though they are redundant:
targets = {
hi = {
input = "blah"
output = "blah"
command = "echo hello"
}
}
Would it be possible to make them voluntary so that one can just do:
targets = {
hi = {
command = "echo hello"
}
}
Thanks!
Is there more documentation on Mare somewhere? I'm trying to include a new library to the Bhuman project. The library has a CMake file that would have been easy to include in a CMake project. Is there a easy way to use that CMake file or to include the library with Mare directly? Thank you.
Since "writeFile" is a macro that is evaluated at the beginning of the build process, it is a problem that it does not create the full path to the location of the file. When building from scratch, the build directory does not yet exist, which means that "writeFile" cannot be used to create files inside the build directory.
Currently, it is only possible to set the version of Visual Studio as a number. The platform toolset is then derived from that number. However, Visual Studio 2012 actually supports two platform toolsets, namely v110 and v110_xp (for targeting Windows XP). It would be nice if this could be specified somehow (2012xp?).
It seems only the first part of the macro cppCompiler is used when mare is used to generate cmake files. We use
cppCompiler = {
"env CCACHE_CPP2=yes $(utilDirRoot)/Buildchain/Linux/bin/ccache clang++ -D__extern_always_inline=inline"
and the CMakeLists.txt generated just contains
set(CMAKE_CXX_COMPILER "env")
Hi, I'm trying to add a specific linker flag
linkFlags += {
"/INCLUDE:?warp_size@cuda@at@@YAHXZ"
}
but the question mark makes problems.
Without the question mark the flag is added to the VS project file, otherwise not.
Looked at the parser class and I guess the question mark is interpreted as if condition?
Is there a way to escape the question mark? I already tried backslash and single quotes.
For example ".cpp" does not work (on Linux) but "./.cpp" does.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.