генерируйте зависимости для make-файла для проекта в C/C++

Вы можете сделать это со списком обещаний, должно быть достаточно просто сделать:

const request = require('request')

const urlList = ["https://www.google.com", "https://www.amazon.com"];

function getStatus(url) {
    return new Promise((resolve, reject) => {
        request(url, function(error, response, body) {
            resolve({site: url, status: (!error && response.statusCode == 200) ? "OK": "Down: " + error.message});
        });
    })   
}

let promiseList = urlList.map(url => getStatus(url));

Promise.all(promiseList).then(resultList => {
    resultList.forEach(result => console.log("Result: ", result));
});

Вы также можете использовать библиотеку request-обещание-native для более приятного API:

[111 ]
34
задан Nathan Fellman 24 November 2008 в 09:49
поделиться

1 ответ

Документация make's GNU предоставляет хорошее решение.

Абсолютно. g++ -MM <your file> генерирует совместимый список GMake зависимостей. Я использую что-то вроде этого:

# Add .d to Make's recognized suffixes.
SUFFIXES += .d

#We don't need to clean up when we're making these targets
NODEPS:=clean tags svn
#Find all the C++ files in the src/ directory
SOURCES:=$(shell find src/ -name "*.cpp")
#These are the dependency files, which make will clean up after it creates them
DEPFILES:=$(patsubst %.cpp,%.d,$(SOURCES))

#Don't create dependencies when we're cleaning, for instance
ifeq (0, $(words $(findstring $(MAKECMDGOALS), $(NODEPS))))
    #Chances are, these files don't exist.  GMake will create them and
    #clean up automatically afterwards
    -include $(DEPFILES)
endif

#This is the rule for creating the dependency files
src/%.d: src/%.cpp
    $(CXX) $(CXXFLAGS) -MM -MT '$(patsubst src/%.cpp,obj/%.o,$<)' $< -MF $@

#This rule does the compilation
obj/%.o: src/%.cpp src/%.d src/%.h
    @$(MKDIR) $(dir $@)
    $(CXX) $(CXXFLAGS) -o $@ -c $<

Примечание: $(CXX)/gcc команде нужно предшествовать с твердой вкладкой

То, что это сделает, автоматически генерируют зависимости для каждого файла, который изменился и компилирует их согласно любому правилу, которое Вы имеете в распоряжении. Это позволяет мне просто выводить новые файлы в src/ каталогу, и скомпилировали их автоматически, зависимости и так далее.

49
ответ дан 27 November 2019 в 16:26
поделиться